1.Django创建项目的命令
django-admin startproject 项目名称
python manage.py startapp 应用app名
manage.py 是项目运行的入口,指定配置文件路径。与项目同名的目录,包含项目的配置文件。
init.py 是一个空文件,作用是这个目录可以被当作包使用。
wsgi.py 是项目与 WSGI 兼容的 Web 服务器。
C:Controller,控制器,接收请求,进行处理,与 M 和 V 进行交互,返回应答。
(2)Controller 控制器接收到用户的注册信息,Controller 会告诉 Model 层将用户的注册信息保存到数据库
(5)Model 层将保存的结果返回给 Controller 控制器。
(6)Controller 控制器收到保存的结果之后,或告诉 View 视图,view 视图产生一个 html 页面。
(7)View 将产生的 Html 页面的内容给了 Controller 控制器。
(8)Controller将Html页面的内容返回给浏览器。
(9)浏览器接受到服务器 Controller 返回的 Html 页面进行解析展示。
M:Model,模型,和 MVC 中的 M 功能相同,和数据库进行交互。
V:view,视图,和 MVC 中的 C 功能相同,接收请求,进行处理,与 M 和 T 进行交互,返回应答。
T:Template,模板,和 MVC 中的 V 功能相同,产生 Html 页面.
(2) View 视图,接收到用户发来的注册数据,View 告诉 Model 将用户的注册信息保存进数据库。
(6)View 视图告诉 Template 模板去产生一个 Html 页面。
(7)Template 生成 html 内容返回给 View 视图。
(9) 浏览器拿到 view 返回的 html 页面内容进行解析,展示。
4.Django中models利用ORM对Mysql 进行查表的语句(多个语句)
返回表格中满足条件的一条数据,如果查到多条数据,则抛异常:MultipleObjectsReturned, 查询不到数据,则抛异常:DoesNotExist。
BookInfo.object.filter(id exact=1)此处的 exact 可以省略
contains BookInfo.objects.filter(btitle contains=’传’)
BookInfo.objects.filter(btitle isnull=False)
BookInfo.objects.filter(id in=[1,3,5])
比较查询 gt lt(less than) gte(equal) lte
BookInfo.objects.filter(id gte=3)
BookInfo.objects.filter(bpub_date year = 1980)
BookInfo.objects.filter(bpub_date gt = date(1980,1,1))
BookInfo.objects.exclude(id=3)
from django.db.models import F
例:where bread > bcomment BookInfo.objects.filter(bread gt =F(‘bcomment’))
例:BookInfo.objects.filter(bread gt=F(‘bcomment’)*2)
from django.db.models import Q
BookInfo.objects.filter(id gt=3, bread gt=30)
BooInfo.objects.filter(Q(id gt=3) & Q(bread gt=3))
例 :BookInfo.objects.filter(Q(id gt=3) | Q(bread gt=30))
例:BookInfo.objects.filter(~Q(id=3))
例 : BookInfo.objects.all().order_by('id')
例 : BookInfo.objects.all().order_by('-id')
例 :BookInfo.objects.filter(id gt=3).order_by('-bread')
from django.db.models import Sum,Count,Max,Min,Avg
例:BookInfo.objects.aggregate(Count('id'))
例:BookInfo.objects.aggregate(Sum(‘bread’))
BookInfo.objects.all().count()
BookInfo.objects.filter(id gt = 3).count()
models.ManyToManyField() 定义在哪个类中都可以。
models.OneToOneField() 定义在哪个类中都可以。
Django 在中间件中预置了六个方法,这六个方法的区别在于不同的阶段执行,对输入或输出进行干预,方法如下:
(1)初始化:无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件。
(2)处理请求前:在每个请求上调用,返回 None 或 HttpResponse 对象。
(3)处理视图前:在每个请求上调用,返回 None 或 HttpResponse 对象。
def process_view(request, view_func, view_args, view_kwargs):