doraemon的python django的中间件(国庆大更新)

### 11.13  中间件

中间件的定义:

中间件是处理django的请求和相应的框架级别的钩子,本质上就是一个类

中间件可以定义为五个方法:

- process_request(self,request)
- process_view(self, request, view_func, view_args, view_kwargs)
- process_template_response(self,request,response)
- process_exception(self, request, exception)
- process_response(self, request, response)

4个特征:执行时间、执行顺序、参数、返回值

1.process_request(self,request)

执行时间:视图函数之前

参数:request   —— 》 和视图函数中是同一个request对象

执行顺序:按照注册的顺序  顺序执行

返回值:

?        None : 正常流程

?        HttpResponse: 后面的中间的process_request、视图函数都不执行,直接执行当前中间件中的process_response方法,倒叙执行之前的中间中process_response方法。

2.process_response(self, request, response)

执行时间:视图函数之后

参数:

?    request   —— 》 和视图函数中是同一个request对象

?    response   ——》  返回给浏览器响应对象

执行顺序:按照注册的顺序  倒叙执行

返回值:

?        HttpResponse:必须返回response对象

3.process_view(self, request, view_func, view_args, view_kwargs)

执行时间:视图函数之前,process_request之后

参数:

?        request   —— 》 和视图函数中是同一个request对象

?        view_func  ——》 视图函数

?        view_args   ——》 视图函数的位置参数

?        view_kwargs  ——》 视图函数的关键字参数

执行顺序:按照注册的顺序  顺序执行

返回值:

?        None : 正常流程

?        HttpResponse: 后面的中间的process_view、视图函数都不执行,直接执行最后一个中间件中的process_response方法,倒叙执行之前的中间中process_response方法。

4.process_exception(self, request, exception)

执行时间(触发条件):视图层面有错时才执行

参数:

?        request   —— 》 和视图函数中是同一个request对象

?        exception   ——》 错误对象

执行顺序:按照注册的顺序  倒叙执行

返回值:

?        None : 交给下一个中间件取处理异常,都没有处理交由django处理异常

?        HttpResponse: 后面的中间的process_exception不执行,直接执行最后一个中间件中的process_response方法,倒叙执行之前的中间中process_response方法。

5.process_template_response(self,request,response)

执行时间(触发条件):视图返回的是一个templateResponse对象

参数:

?    request   —— 》 和视图函数中是同一个request对象

?    response   ——》  templateResponse对象

执行顺序:按照注册的顺序  倒叙执行

返回值:

?        HttpResponse:必须返回response对象

![img](https://images2018.cnblogs.com/blog/867021/201804/867021-20180409214433968-2137571775.png)

![img](https://images2018.cnblogs.com/blog/1168194/201807/1168194-20180719084357413-1778333372.png)

原文地址:https://www.cnblogs.com/doraemon548542/p/11638584.html

时间: 2024-07-30 11:33:33

doraemon的python django的中间件(国庆大更新)的相关文章

doraemon的python csrf校验(国庆大更新)

### 11.11 csrf装饰器 ```python from django.views.decorators.csrf import csrf_exempt,csrf_protect,ensure_csrf_cookie csrf_exempt #某个视图不需要进行csrf校验 csrf_protect #某个视图需要进行csrf校验 ensure_csrf_cookie #确保生成csrf的cookie ``` csrf功能: 1.csrf中间件中执行process_request: ?

doraemon的python form组件(国庆大更新)

### 11.12 form组件 form组件的功能: 1. 生产input标签 2. 对提交的数据进行校验 3. 提供错误提示 定义form组件 ```python from django import forms class RegForm(forms.Form): username = forms.CharField() pwd = forms.CharField() ``` 使用的流程 视图 ```python form_obj = RegForm() form_obj = RegFor

doraemon的python django框架的路由详解(国庆大更新)

### 11.8 路由 #### 11.8.1 urlconf ```python from django.conf.urls import url from app01 import views urlpatterns = [ url(r'^admin/',admin.site.urls), #这里用到了正则 url(r'^home',views.home,{},name='home'), ] ``` #### 11.8.2 分组和命名分组 url上捕获的都是字符串 分组 ```python

doraemon的python cookie和session(国庆大更新)

### 11.10 cookie和session #### 11.10.1 cookie 定义:保存在浏览器本地上的一组组键值对 为什么有cookie? - http协议是无状态的,每次http请求都是对立的,相互之间没有关联,yongcoolie保存状态 特点: 1. 由服务器让浏览器进行设置的 2. 浏览器保存在浏览器本地 3. 下次访问的时候自动携带 4. 应用场景:登录.保存浏览器习惯.简单的投票 django中操作cookie 设置: ```python ret = redirect(

doraemon的python ORM必会操作(国庆大更新)

### 11.9 ORM的字段和参数 ```python AutoField 主键 IntegerField 整数 CharField 字符串 BoolleanField 布尔值 DateTimeField DateField 日期时间 auto_now_add=True #新增数据的时候回自动保存当前的时间 auto_now=True #新增.修改数据的时候回自动保存当前的时间 DecimalField 十进制的小数 max_digits 小数总长度 decimal_place 小数长度 ``

微信开发python+django两个月的成功经历,django是个好框架!

时间:大三 上学期没有用微信内置浏览器而纯对话开发,坑了自己好一下. 下学期选错bottle框架,以为轻量好,谁知开发中什么都自己来很痛苦. 选对了框架django,终于在大三最后的个把月里写出了里程碑式的现在这个微信端,自己都感动到,作为我大三一年web开发的终结吧. 亮点1:自带后台管理 亮点2:后台权限管理 亮点3:微信回复规则设置去代码化,图形界面. 亮点4:一平台多网店 技巧:微信规则不匹配时不能回复吗?不是,规则包含空字符总能匹配任意文本,请看下面的微信规则截图. 后台 选择botl

初识python django, 让我们一起进入python的世界吧

这几天花时间学习了一下python django,正如某人所说,掌握另外一门语言是有必要的,同样我也作出了自己的选择.从这几天的学习中,我确实也发现其他语言及其框架等确实有一种与众不同的感觉.下面我把自己这几天看到的东西稍微作了一下总结,本文并不是django的教程,而是在麦子学院参加学习之后对django的一些自己的理解,可能有些不成熟的地方,希望大家不要吝惜手中的砖头. 一 django的orm 如果有人问我喜欢django的什么,我会耗不犹豫的告诉你是django的orm,这个想法的产生完

Nginx + uWSGI + Python + Django部署实例

Nginx: Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性: 作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎.能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型. 作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器

Python+Django+SAE系列教程13-----MySQL记录的添\删\改

建立了数据库后,我们就来做一个简单的表(person_classroom)的添加.删除.修改的操作. 首先我们建立一个添加的页面的模板Classroom_Add.html(添加的表单)并把它放在Bidding\templates\person中: Classroom_Add.html: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title>数据库操作