一、MVC框架
1、MVC框架核心思想:
分工和解耦
2、web MVC举例:
以通过浏览器注册用户信息为例:
- M:Model,模型, 和数据库进行交互。
- V:View,视图, 产生html页面。
- C:Controller,控制器, 接收请求,进行处理,与M和V进行交互,返回应答。
二、MVT框架
Django遵循MVT的思想
- M:Model,模型, 和MVC中M功能相同,和数据库进行交互。
- V:View,视图, 和MVC中C功能相同,接收请求,进行处理,与M和T进行交互,返回应答。
- T:Template,模板, 和MVC中V功能相同,产生html页面。
三、创建Django项目:
命令:django-admin startproject 项目名
项目目录如下:
- __init.py: 说明test1是一个python包。
- settings.py: 项目的配置文件。
- urls.py: 进行url路由的配置。
- wsgi.py: web服务器和Django交互的入口。
- manage.py: 项目的管理文件
四、创建应用
一个项目由很多个应用组成的,每一个应用完成一个功能模块。
命令:python manage.py startapp 应用名
应用目录如下:
- init.py: 说明目录是一个Python模块。
- models.py: 写和数据库项目的内容, 设计模型类。
- views.py: ,接收请求,进行处理,与M和T进行交互,返回应答。 定义处理函数,视图函数。
- tests.py: 写测试代码的文件。
- admin.py: 网站后台管理相关的文件。
五、应用注册:
建立应用和项目之间的联系,需要对应用进行注册。修改settings.py中的INSTALLED_APPS配置项。
六、启动项目:
运行开发web服务器命令:python manage.py runserver
七、模型类:
- O(objects):类和对象。
- R(Relation):关系,关系数据库中的表格。
- M(Mapping):映射。
- django中内嵌了ORM框架,ORM框架可以将类和数据表进行对应起来,只需要通过类和对象就可以对数据表进行操作。
- 在Django中主要是设计类:模型类。
- ORM另外一个作用:根据设计的类生成数据库中的表。
1、模型类设计
- 必须继承与models.Model类。
- Models.ForeignKey可以建立两个模型类之间一对多的关系,django在生成表的时候,就会在多端的表中创建一列作为外键,建立两个表之间一对多的关系。
2、模型类生成表
(1)生成迁移文件:
- 命令:python manage.py makemigrations
- 迁移文件是根据模型类生成的
(2)执行迁移生成表 - 命令:python mange.py migrate
- 根据迁移文件生成表。
- 生成表名的默认格式:应用名_模型类名小写
3、通过模型类操作数据库表
- 导入模型类:
(1)from 应用名称.models import 模型类名 - 向booktest_bookinfo表中插入一条数据。
(1)b = BookInfo() #定义一个BookInfo类的对象
(2)b.btitle =‘天龙八部’ #定义b对象的属性并赋值
(3)b.bpub_date = date(1990,10,11)
(4)b.save() #才会将数据保存进数据库 - 查询出booktest_bookinfo表中id为1的数据。
(1)b = BookInfo.objects.get(id=1) - 在上一步的基础上改变b对应图书的出版日期。
(1)b.bpub_date = date(1989,10,21)
(2)b.save() #才会更新表格中的数据 - 紧接上一步,删除b对应的图书的数据。
(1)b.delete() #才会删除 - 向booktest_heroInfo表中插入一条数据。
(1)h = HeroInfo()
(2)h.hname = ‘郭靖’
(3)h.hgender = False
(4)h.hcomment = ‘降龙十八掌’
(5)b2 = BookInfo.objects.get(id=2)
(6)h.hbook = b2 # 给关系属性赋值,英雄对象所属的图书对象
(7)h.save() - 查询图书表里面的所有内容。
(1)BookInfo.objects.all()
(2)HeroInfo.objects.all()
4、关联操作
- 查询出id为2的图书中所有英雄人物的信息。
b = BookInfo.objects.get(id=2)
b.heroinfo_set.all() #查询出b图书中所有英雄人物的信息
八、后台管理:
1、本地化
- 语言和时区的本地化。
- 修改settings.py文件。
2、创建管理员
- 命令:python manage.py createsuperuser
3、注册模型类
- 在应用下的admin.py中注册模型类。
- 告诉djang框架根据注册的模型类来生成对应表管理页面。
- b = BookInfo()
4、自定义管理页面
- 自定义模型管理类。模型管理类就是告诉django在生成的管理页面上显示哪些内容
九、视图
在Django中,通过浏览器去请求一个页面时,使用视图函数来处理这个请求的,视图函数处理之后,要给浏览器返回页面内容。
1、定义视图函数
def index(request):
return HttpResponse('hello python')
- 视图函数必须有一个参数request,进行处理之后,需要返回一个HttpResponse的类对象,hello
python就是返回给浏览器显示的内容。
2、进行url配置
- url配置的目的是让建立url和视图函数的对应关系。url配置项定义在urlpatterns的列表中,每一个配置项都调用url函数。
- url函数有两个参数,第一个参数是一个正则表达式,第二个是对应的处理动作。
- 配置url时,有两种语法格式:
- (1)url(正则表达式,视图函数名)
- (2)url(正则表达式,include(应用中的urls文件))
- 工作中在配置url时,首先在项目的urls.py文件中添加配置项时,并不写具体的url和视图函数之间的对应关系,而是包含具体应用的urls.py文件,在应用的urls.py文件中写url和视图函数的对应关系
3、url匹配过程
- 在项目的urls.py文件中包含具体应用的urls.py文件,应用的urls.py文件中写url和视图函数的对应关系。
- 当用户输入如http://127.0.0.1:8000/aindex时,去除域名和最前面的/,剩下aindex,拿aindex字符串到项目的urls文件中进行匹配,配置成功之后,去除匹配的a字符,那剩下的index字符串继续到应用的urls文件中进行正则匹配,匹配成功之后执行视图函数index,index视图函数返回内容hello
python给浏览器来显示。
十、模板
1、模板文件的使用
- 创建模板文件夹
- 配置模板目录
使用模板文件: - (1)加载模板文件
- 去模板目录下面获取html文件的内容,得到一个模板对象。
- (2)定义模板上下文
- 向模板文件传递数据。
- (3)模板渲染
- 得到一个标准的html内容。
给模板文件传递数据:
-
模板变量使用:{{ 模板变量名 }}
-
模板代码段:{%代码段%}
-
for循环
{% for i in list %}
list不为空时执行的逻辑
{% empty %}
list为空时执行的逻辑
{% endfor %}