Django框架详解

     阅读:29

一、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、定义视图函数

  • 视图函数定义在views.py中。
  • 例:
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 %}