由django请求生命周期延伸出的知识点大总结

django项目搭建见:html

http://www.javashuo.com/article/p-yeulmrio-bs.htmlweb

django请求生命周期图数据库

 

 

由浏览器发起请求开始django

知识点1:json

浏览器与服务器软件架构:C/S架构浏览器

HTTP协议:又称超文本传输协议,它规定了浏览器与服务端数据传输的格式tomcat

HTTP协议四大特性:安全

    基于TCP/IP做用于应用层的协议服务器

    基于请求响应cookie

    无状态

    无链接

知识点2:

请求格式及响应格式:

  请求格式:

    请求首行

    请求头

    空行(\r\n)

    请求体

  响应格式:

    响应首行

    响应头

    空行

    响应体

 

 

wsgiref请求响应处理

知识点3:web服务网关协议

cgi:通用网关协议

wsgi协议:

  wsgi协议(Web Server Gateway Interface) 主要包含server和application两部分:

  • WSGI server负责从客户端接收请求,将request转发给application,将application返回的response返回给客户端;
  • WSGI application接收由server转发的request,处理请求,并将处理结果返回给server。application中能够包括多个栈式的中间件(middlewares),这些中间件须要同时实现server与application,所以能够在WSGI服务器与WSGI应用之间起调节做用:对服务器来讲,中间件扮演应用程序(执行程序),对应用程序来讲,中间件扮演服务器(WSGI服务器)。

WSGI协议实际上是定义了一种serverapplication解耦的规范,咱们django自带的wsgiref是对该协议的具体实现

此外还有不少其余实现该协议的服务器:

uwsgi:支持较高并发,django项目上线通常会选择用它替换django自带的wsgiref    == JAVA中的tomcat

wsgiref:支持并发不高,django自带

 

请求解析完成后依次经过Django中间件

知识点4:django中间件

django自带七大中间件:能够简单理解为django的门户,安全认证及全局处理都在这里面

MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]

除了django自带的中间件之外咱们还能够自定义中间件实现一些全局的校验和配置

方法:在应用下新建文件夹,名字自取,文件夹下新建任意py文件,名字自取,接下来就能够在py中定义本身的中间件l

# 导入MiddlewareMixin模块
from django.utils.deprecation import MiddlewareMixin #定义中间件的类,它继承MiddlewareMixin
class Md1(MiddlewareMixin): def process_request(self, request): print('Md1里面的process_request') class Md2(MiddlewareMixin): def process_request(self, request): print('Md2里面的process_request')

django暴露给开发者5种方法分别是:

process_request(self, request):   #请求来的时候执行
process_response(self, request, response):  #响应返回时执行
process_template_response(self, request, response): #视图函数执行完了执行
process_view(self, request, view_func, view_args, view_kwargs): #路由匹配成功后视图函数执行前执行
process_exception(self, request, exception): #视图函数出错时执行

中间件具体做用及执行流程详见:http://www.javashuo.com/article/p-qbrfqflq-ke.html

 

接下来进入urls.py,路由匹配

知识点5:路由系统

urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^$',views.home), url(r'^test/$',views.test), url(r'^testadd/$',views.testadd), url(r'',views.error) ]

①路由正则匹配

②无名分组

③有名分组

④反向解析

⑤路由分发

路由系统详见:http://www.javashuo.com/article/p-nkypyunf-kk.html

 

路由匹配成功,进入视图函数

知识点6:CBV/FBV

FBV:

  路由层写法: 

url(r'^test/$',views.test),

  视图层写法:

def text(request): if request.method == "POST": return HttpResponse("ok") elif request.method == "GET": return HttpResponse("ok")

 

CBV:

  路由层写法:

url(r'^test/$',views.Text.as_view()),

  视图层写法:

from django.views import View class Text(View): def get(self,request): return HttpResponse("ok") def post(self,request): return HttpResponse("ok")

三板斧及jsonresponse

from django.shortcuts import render,redirect,HttpResponse from django.http import JsonResponse

 

CBV源码剖析见:

 

视图函数处理数据,进行django模板渲染

知识点7:django模板层

①过滤器

②标签

③自定义过滤器、标签、inclusion_tag

④模板继承与导入

⑤静态文件配置

详见:

模板层:http://www.javashuo.com/article/p-finxqstq-gq.html

补充:http://www.javashuo.com/article/p-hocvxdvt-e.html

 

知识点8:cookie与session

①cookie基本使用

②session原理及使用

③auth模块

④自定义User表

 

cookie与session使用见:http://www.javashuo.com/article/p-bzzrwtkz-eh.html

auth模块及自定义User表使用见:http://www.javashuo.com/article/p-dcfxvqnt-kd.html

 

知识点9:form认证组件

①form组件使用

②form组件进阶

③分页器

form组件:http://www.javashuo.com/article/p-fsodyuqv-cp.html

form组件进阶:http://www.javashuo.com/article/p-sqnbaoie-g.html

分页器:http://www.javashuo.com/article/p-qjtknjxy-cr.html

 

知识点10:django数据库操做:

①一对1、一对多、多对多表分析及建立

②多对多表三种建立方式

③django ORM增删改查、单表操做、多表操做

④F、Q查询

⑤ORM类、字段基础

⑥事务、批量插入、查询优化

表关系:http://www.javashuo.com/article/p-gmdviixd-gc.html

多对多表三种建立方式:http://www.javashuo.com/article/p-yjigehkj-ch.html

ORM增删改查:http://www.javashuo.com/article/p-utgsgsym-gg.html

F、Q查询:http://www.javashuo.com/article/p-pzvugmnd-hn.html

ORM基础:http://www.javashuo.com/article/p-wbfksjui-gk.html

django-model进阶:https://www.cnblogs.com/liuqingzheng/articles/9805991.html

 

知识点11:

未完待续...

 

原文出处:https://www.cnblogs.com/dongxixi/p/11115921.html

相关文章
相关标签/搜索