小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
Django介绍
Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。2019年12月2日,Django 3. 0发布 [1] 。
---- 摘自百度百科
开始你的Django之旅第一步!
- 环境搭建:Python发行版anaconda工具管理本地开发环境
如不想安装anaconda,则可以使用python -m venv to_path<路径>,创建虚拟环境
切换到开发环境,虚拟环境基本会有一个activate文件<linux是sh,win是bat扩展名>
安装Django版本,当前已经到3.2.6开发版了,那么可以选择最新的稳定版本:3.2.5。
复制代码
- 第一步安装:pip install Django # 默认安装最新版本
D:> django-admin -h # 创建工程之前先查看帮助文档
Type 'django-admin help ' for help on a specific subcommand.
Available subcommands:
[django]
check
compilemessages
createcachetable
dbshell
diffsettings
dumpdata
flush
inspectdb
loaddata
makemessages
makemigrations
migrate
runserver
sendtestemail
shell
showmigrations
sqlflush
sqlmigrate
sqlsequencereset
squashmigrations
startapp
startproject
test
testserver
Note that only Django core commands are listed as settings are not properly configured
(error: Requested setting INSTALLED_APPS, but settings are not configured. You must either
define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before
accessing settings.).
复制代码
- 第二步创建工程:
django-admin startproject myDjango
- 第三步创建子应用:先进入工程 <一个工程中可以有多个子应用>
python manage.py startapp myapp
- 第四步创建模型:
from django.db import models
# Create your models here.
class UserInfo(models.Model):
name=models.CharField(max_length=10)
age=models.IntegerField()
addr=models.CharField(max_length=100)
gender=models.BooleanField()
birth=models.DateField()
def __str__(self):
return self.name
class ClassInfo(models.Model):
teacher=models.CharField(max_length=10)
class_room=models.IntegerField()
book=models.CharField(max_length=20)
def __str__(self):
"""为了在admin后台显示字段而重写str,1.x,中文乱码还需要encode("utf-8")转码"""
return self.teacher
复制代码
- 第五步生成迁移脚本
python manage.py makemigrations myapp
- 第六步执行迁移脚本
python manage.py migrate
- 第七步创建管理员帐号
python manage.py createsuperuser
- 第八步注册admin
注册模型类,如果想通过后台管理前台数据
from django.contrib import admin
from myapp.models import UserInfo, ClassInfo
# Register your models here.
class UserInfoAdmin(admin.ModelAdmin):
# 这个是注册在后台编辑时显示;默认全显示
# fields = [ "name", "age", "gender", "addr", "birth"]
list_display = ("id", "name", "age", "gender", "addr", "birth")
class ClassInfoAdmin(admin.ModelAdmin):
# fields = [ "teacher", "class_room", "book"]
list_display = ("id", "teacher", "class_room", "book")
admin.site.register(UserInfo, UserInfoAdmin)
admin.site.register(ClassInfo, ClassInfoAdmin)
复制代码
- 第九步进入子应用views.py创建视图
from django.shortcuts import render
from django.http.response import HttpResponse
# Create your views here.
def index(request):
return HttpResponse("Hello World!")
def detail(request):
return render(request,template_name="myapp/detail.html",content={"list":range(10)})
复制代码
- 第十步配置urls,在管理后台urls.py
from django.contrib import admin
from django.urls import path
# django1.1版本之后,不再支持字符串定义视图
from myapp import views
urlpatterns = [
path('admin/', admin.site.urls),
re_path(r"^$",views.index),
path("detail/",views.detail),
]
# 在1.x版本使用url,支持绝对和正则匹配;3.x区分path和re_path
复制代码
- 第十一步在工程根路径创建模版文件:templates/myapp
<html>
<title></title>
<body>
<ul>
{% for info in infoList %}
<li>{{info}}</li>
{% endfor %}
</ul>
</body>
</html>
复制代码
- 第十二步settings设置
# myapp 需要在settings/INSTALLED_APPS 追加应用
INSTALLED_APPS=["...","...",
#自己的应用
"myapp",]
# admin后台显示中文及时区
LANGUAGE_CODE='zh-hans'
TIME_ZONE = 'Asia/Shanghai'
# 总路径配置,然后再去urls找视图
ROOT_URLCONF='myDjango.urls'
# 配置模版路径
TEMPLATES
***
'DIRS': [os.path.join(BASE_DIR,"templates")], # 注意配置不要和视图render的模版路径重复了
***
复制代码
扩展:python manage.py shell
可进入sqlite3数据库操作
>>> from myapp.models import ClassInfo
>>> ci=ClassInfo()
>>> ci.teacher="唐老师"
>>> ci.class_room=1001
>>> ci.book="java"
>>> ci.save() # 新增或修改之后记得保存
>>> ci.delete() # 删除
>>> ClassInfo.objects.all() # 获取所有数据
>>> ClassInfo.objects.get(id=1) # 修改记录先获取再赋值保存
复制代码




近期评论