1、pip安装指定版本
pip install Django == 2.1.5
2、a).进入虚拟环境
b).启动虚拟环境后进入创建项目的路径下
c).django-admin startproject [项目名称]
d).进入项目路径下(manage.py的同级目录下创建应用)python manage.py startapp [APP名称]
3、manage.py:项目管理文件
wsgi.py:python web服务器网关接口(python应用与web服务器之间的通信接口)
urls.py: url配置文件(Django项目中所有地址【页面】都需要我们自己去配置其url)
settings.py【重要】:Django的总配置文件,数据库,web应用、时间等各种配置
__init__.py: python中声明模块对文件,内容默认为空
4、创建应用
使用manager.py创建应用
(1)打开命令行,进入manage.py同级目录
(2)命令行输入:python manage.py startapp [应用名称] (项目目录会多一个该应用的文件夹)
(3)添加应用名到settings.py中的INSTALLED_APPS里
(4)应用目录:
a).migrations:数据迁移模块(内容自动生成)
b).admin.py:该应用的后台管理系统配置(Django的特色--自带后台管理系统)
c).models.py:数据模块(使用ORM框架,类似于MVC中对Models模型)
d).test.py:自动化测试模块(Django提供了自动化测试功能,在此编写测试语句)
e).views.py:执行响应对代码所在模块,代码逻辑处理的主要地点,编写项目大部分代码
5、创建完应用,打开应用下的views.py就可以编写代码了,框架搭建结束
6、记得在urls.py文件下配置url(path([url路径], [对应views.py的方法]),),eg:path('index/', admin.site.urls)
7、blog.views.py文件:
(1)每个响应对应一个函数,函数必须返回一个响应
(2)函数必须存在一个参数,一般约定为request
(3)每一个响应(函数)对应一个url(urls.py)
8、urls.py
(1)每个url都以方法的形式写出来
(2)url函数放在urlpattern列表中
(3)url/path函数三个参数:1.X版本url(正则)/2.X版本path,对应方法,名称
(4)根urls.py针对APP配置的URL名称,是该APP所有URL的总路径
9、Templates(使用了Django模板语言DTL,也可以使用第三方模板:Jinja2,可在settings.py文件中修 改):存放HTML文件
(1)在APP的根目录(与migration同级)下创建templates文件夹
(2)在该目录下创建HTML文件
(3)在views.py中返回render()
10、模板语言DTL的使用
(1)render()函数中支持一个dict类型(键值对)参数带回数据,在模板中{{参数名}}来直接使用
(2)Django查找template按照INSTALLED_APPS中的添加顺序,不同APP下Templates目录中的同名html 会产生冲突----新建templates文件夹的时候在当前APP下新建一个与应用同名的文件夹存放html文件
11、模型(models)
(1)一般一个Model对应一个数据库的一张表
(2)Django中对Models以类对形式表现
(3)它包含了一些基本字段以及数据的一些行为
(4)ORM:--对象关系映射,实现了对象和数据库之间对映射,隐藏了数据访问的细节,不需要编写 SQL语句
(5)在应用根目录下创建models.py,并引用model模块,创建类,继承models.Model,该类即是一张数 据表,在该类中创建字段,字段就是类中对属性(变量)attr = models.CharField (max_length=64)
(6)生成数据表
a).命令行中进入manage.py的同级目录
b).(准备)执行python manage.py makemigrations [app名称](不写默认该项目下的所有应用)
c).(开始)执行python manage.py migrate(成功后会在该应用下的migrations文件夹下生成一个 0001——initial.py文件,执行python manage.py sqlmigrate 应用名 文件id --查看sql语句 python manage.py sqlmigrate blog 0001)
d).默认sqlite3的数据库在项目根目录下db.sqlite3
12、页面呈现数据
(1)views.py中import models
(2)article = models.Article.objects.get(pk=1)
(3)render(request, page,{'article': article})
(4)前端步骤:模板可直接使用对象以及对象的"."操作符{{article.title}}
13、Admin:
(1)Admin是Django自带的一个功能强大的自动化数据管理界面
(2)被授权的用户可直接在Admin中管理数据库
(3)Django提供了许多针对Admin的定制功能
(4)创建用户
python manage.py createsuperuser创建超级用户 账号admin密码handongadmin
(5)Admin入口(后台管理访问地址):localhost:8000/admin/
(6)修改settings.py中的LANGUAGE_CODE = 'zh_Hans',可将页面改为中文
14、配置Admin(站点管理)
(1)配置应用:在应用下admin.py中引入自身的models模块(或里面的模型类)
编辑admin.py:admin.site.register(models.Artical)
(2)修改数据
点击Article超链接进入Article列表页面
(3)修改数据默认显示名称
在Article类下添加一个方法
根据Python版本选择__str__(self)或__unicode__(self)
return self.title
15、页面编写过程(url参数传递)
(1)参数写在方法的request参数后面,可以有默认值
(2)Django2.0版本以上url中使用正则表达式的话,使用re_path:
re_path('article/(?P<article_id>[0-9]+)$', views.article_page, name='article_page')
(3)URL正则中的组名article_id必须和views.py中对应的方法参数一致
16、Django中的超链接
(1)href后是目标地址,template中可以用:{% url 'app_name:url_name' param %}
(2)其中app_name和url_name 都是在urls_py 中配置
两种写法,取决于是否使用include()引用了另一个url配置文件:
a)根urls,写在include()的第二个参数位置,namespace = 'blog'
b)应用下则写在urls的第三个参数位置,name = 'article'
c)jiango1.5以上版本在应用下的urls.py中配置app_name