由django请求生命周期延伸出的知识点大总结
django项目搭建见:
https://www.cnblogs.com/dongxixi/p/10981577.html
django请求生命周期图:

由浏览器发起请求开始
知识点1:
浏览器与服务器软件架构:C/S架构
HTTP协议:又称超文本传输协议,它规定了浏览器与服务端数据传输的格式
HTTP协议四大特性:
基于TCP/IP作用于应用层的协议
基于请求响应
无状态
无连接
知识点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协议其实是定义了一种server与application解耦的规范,我们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): #视图函数出错时执行
中间件具体作用及执行流程详见:https://www.cnblogs.com/dongxixi/p/11048901.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)
]
①路由正则匹配
②无名分组
③有名分组
④反向解析
⑤路由分发
路由系统详见:https://www.cnblogs.com/dongxixi/p/11001722.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
④模板继承与导入
⑤静态文件配置
详见:
模板层:https://www.cnblogs.com/dongxixi/p/11013803.html
补充:https://www.cnblogs.com/dongxixi/p/11007339.html
知识点8:cookie与session
①cookie基本使用
②session原理及使用
③auth模块
④自定义User表
cookie与session使用见:https://www.cnblogs.com/dongxixi/p/11048974.html
auth模块及自定义User表使用见:https://www.cnblogs.com/dongxixi/p/11055516.html
知识点9:form认证组件
①form组件使用
②form组件进阶
③分页器
form组件:https://www.cnblogs.com/dongxixi/p/11042917.html
form组件进阶:https://www.cnblogs.com/dongxixi/p/11043435.html
分页器:https://www.cnblogs.com/dongxixi/p/11042854.html
知识点10:django数据库操作:
①一对一、一对多、多对多表分析及创建
②多对多表三种创建方式
③django ORM增删改查、单表操作、多表操作
④F、Q查询
⑤ORM类、字段基础
⑥事务、批量插入、查询优化
表关系:https://www.cnblogs.com/dongxixi/p/10862974.html
多对多表三种创建方式:https://www.cnblogs.com/dongxixi/p/11042883.html
ORM增删改查:https://www.cnblogs.com/dongxixi/p/11013783.html
F、Q查询:https://www.cnblogs.com/dongxixi/p/11042869.html
ORM基础:https://www.cnblogs.com/dongxixi/p/11050753.html
django-model进阶:https://www.cnblogs.com/liuqingzheng/articles/9805991.html
知识点11:
未完待续...
由django请求生命周期延伸出的知识点大总结的更多相关文章
- django请求生命周期,FBV和CBV,ORM拾遗,Git
一.django 请求生命周期 流程图: 1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post, ...
- python 全栈开发,Day84(django请求生命周期,FBV和CBV,ORM拾遗,Git)
一.django 请求生命周期 流程图: 1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post, ...
- Django组件 - Django请求生命周期、中间件
一.Django请求生命周期 在学习中间件之前,先了解一下Django的请求生命周期,如下图: 1)client代表浏览器,浏览器内部为我们封装了socket,Django的WSGI模块也封装了soc ...
- Django框架10 /sweetalert插件、django事务和锁、中间件、django请求生命周期
Django框架10 /sweetalert插件.django事务和锁.中间件.django请求生命周期 目录 Django框架10 /sweetalert插件.django事务和锁.中间件.djan ...
- [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]
[Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...
- Django(35)Django请求生命周期分析(超详细)
Django请求生命周期分析 1.客户端发送请求 在浏览器输入url地址,例如www.baidu.com,浏览器会自动补全协议(http),变为http://www.baidu.com,现在部分网站都 ...
- Django请求生命周期之响应内容
Django请求生命周期: 1.发送http请求2.服务器接受,根据请求头中的url在路由关系表中进行匹配(从上到下)3.匹配成功后,执行指定的views函数 URL -> 函数 ==>F ...
- Django 请求生命周期【图示】
Django 请求生命周期
- Django框架深入了解_01(Django请求生命周期、开发模式、cbv源码分析、restful规范、跨域、drf的安装及源码初识)
一.Django请求生命周期: 前端发出请求到后端,通过Django处理.响应返回给前端相关结果的过程 先进入实现了wsgi协议的web服务器--->进入django中间件--->路由f分 ...
随机推荐
- sgu209:Areas(计算几何)
意甲冠军: 给一些直.这架飞机被分成了很多这些线性块.每个块的需求面积封闭曲线图. 分析: ①我们应要求交点22的直线: ②每行上的交点的重排序,借此来离散一整行(正反两条边): ③对于连向一个点的几 ...
- java server wrapper 和 maven assembly 插件
Java Service Wrapper工具YAJSW 简介信息 YAJSW是一个开源的Java服务包装(Java Service Wrapper)工具.YAJSW允许您把任何应用程序安装为windo ...
- 通用javascript脚本函数库
/* 名字:Common.js 功能:通用javascript脚本函数库 包括: 1.Trim(str)--去除字符串两边的空格 2.XMLEncode(str)--对字符串进行XML编码 3.Sho ...
- Ueditor 在.net core 中的使用
参考模仿了 https://blog.csdn.net/qq_34220236/article/details/80581811 这篇文章 要注意的是,去ueditor官网下的包,大多不可用. 要自己 ...
- 1.node 在node中 进行包与包之间函数的调用 module.exports
本文参考学习了廖雪峰的大作 模块 但是廖的文章只模块只有一个函数,在此演示一个模块中有两个函数,在另外一个函数中是如何去调用的 //hello.js包中的内容'use strict'; var s=' ...
- IME输入法编程心得
原文:IME输入法编程心得 posted @ 2012-11-30 00:42 from [FreedomShe] 自然语言处理的输入法作业成品没有做出来,但不想再在蛋疼的Win32上面耗费时间了,整 ...
- 【UVA】11992 - Fast Matrix Operations(段树模板)
主体段树,要注意,因为有set和add操作,当慵懒的标志下推.递归优先set,后复发add,每次运行set行动add马克清0 WA了好几次是由于计算那一段的时候出问题了,可笑的是我对着模板找了一个多小 ...
- 百度地图 Android SDK - 新的版本号(v3.2.0)正式上线
百度地图 Android SDK v3.2.0 在版本号 2014 年 11 月 07 日本正式推出工作完成! watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQ ...
- 芯片超Intel,盈利比肩Apple,三星成科技界"全民公敌"
原标题:芯片超英特尔,盈利比肩苹果:三星现在是科技界“全民公敌”了 当人们津津乐道于三星的手机业务或者是电视业务时,它已静悄悄的拿下了芯片行业的第一,并且凭借着在芯片上的巨大获利让它的老对手们眼红 ...
- sqlserver从xlsx读取数据
exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Querie ...