7:django 中间件
中间件
中间件是一个连接django请求/相应处理的框架,是一个轻量级的低层次的全局影响django输入输出的系统插件。
每一个中间件组件负责一些特定的功能,这里我们我们只看一下如何激活使用系统自带的中间件,至于如何写自己的中间件,目前自己的水平还没到,主要觉得还用不着,等用着的时候在写吧
激活中间件
在django中激活中间件很简单,只需要在django的配置文件中把自己想使用的中间件的名字加入到 MIDDLEWARE_CLASSES这个列表里面就ok了
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
值得注意的是,django在处理请求的时候,是顺序检索中间件列表的;django在处理相应的时候,是逆序检索中间件列表的;可以按照下图来理解
每一个请求响应都是从左到右的,所以是现顺序再逆序的

内建的中间件(django自带的中间件)
Cache middleware,正如其名,关于缓存的中间件
- class UpdateCacheMiddleware
- class FetchFromCacheMiddleware
“Common” middleware,通用中间件,主要是增加了一些便利的功能,比如有关user_agent(检查agent),append_slash(添加后斜线),prepend_www(甜加www前缀),send_broken_link_emails(死链报告)以及Use_etags之类的功能
- class CommonMiddleware
View metadata middleware 查看元数据中间件,
- class XViewMiddleware
GZip middleware gzip压缩中间件,为那些接受gzip压缩协议的浏览器压缩网页内容
- class GZipMiddleware
Conditional GET middleware 有条件的get中间件,处理一些有特殊要求的get请求
- class ConditionalGetMiddleware
Reverse proxy middleware 反向代理中间件
- class SetRemoteAddrFromForwardedFor
Locale middleware 语言环境中间件
- class LocaleMiddleware
Message middleware 消息中间件
- class MessageMiddleware
Session middleware 会话中间件
- class SessionMiddleware
Authentication middleware 认证中间件
- class AuthenticationMiddleware
CSRF protection middleware csrf保护中间件
- class CsrfViewMiddleware
Transaction middleware 交易中间件
- class TransactionMiddleware
X-Frame-Options middleware
- class XFrameOptionsMiddleware
p
7:django 中间件的更多相关文章
- Django数据操作F和Q、model多对多操作、Django中间件、信号、读数据库里的数据实现分页
models.tb.objects.all().using('default'),根据using来指定在哪个库里查询,default是settings中配置的数据库的连接名称. 外话:django中引 ...
- django 中间件
django处理一个Request的过程是首先通过django 中间件,然后再通过默认的URL方式进行的.所以说我们要做的就是在django 中间件这个地方把所有Request拦截住,用我们自己的方式 ...
- day20 FORM补充(随时更新),F/Q操作,model之多对多,django中间件,缓存,信号
python-day20 1.FROM生成select标签的数据应该来源于数据库. 2.model 操作 F/Q (组合查询) 3.model 多对多操作. 4.中间件 :在请求到达url前先会经过 ...
- Django学习之七:Django 中间件
目录 Django 中间件 自定义中间件 - - - 大体两种方式 将中间件移除 实例 中间件加载源码阅读 总结 Django 中间件 Tips: 更新日志: 2019.01.31 更新django中 ...
- Django中间件的使用
Django中间件的使用 中间件(middleware) 中间件应用于request与服务端之间和服务端与response之间,客户端发起请求到服务端接收可以通过中间件,服务端返回响应与客户端接收响应 ...
- Django中间件 及 form 实现用户登陆
Django中间件 及 form 实现用户登陆 Form 验证 密码调用md5 加密存储 form.add_error("字段名", "错误信息") 自定义错误 ...
- Django 2.0 学习(20):Django 中间件详解
Django 中间件详解 Django中间件 在Django中,中间件(middleware)其实就是一个类,在请求到来和结束后,Django会根据自己的规则在合适的时机执行中间件中相应的方法. 1. ...
- Django中间件的5种自定义方法
阅读目录(Content) Django中间件 自定义中间件 中间件(类)中5种方法 中间件应用场景 回到顶部(go to top) Django中间件 在http请求 到达视图函数之前 和视图函 ...
- Python自动化之Django中间件
django中间件 Django请求生命周期 中间件中可以定义方法,分别是 process_request(self,request) process_view(self, request, call ...
- Django中间件如何处理请求
Django中间件 在http请求 到达视图函数之前 和视图函数return之后,django会根据自己的规则在合适的时机执行中间件中相应的方法. Django1.9版本以后中间件的执行流程 1. ...
随机推荐
- 从零开始学Linux系统(三)安装CentOS-7及软件包管理操作
推荐博文: VirtualBox安装CentOS7步骤详解: https://my.oschina.net/AaronDMC/blog/840753 如何安装CentOS7字符界面 :http://b ...
- javascript forEach无法break,使用every代替
every的入口参数是一个返回bool值的函数,在需要break的地方return false,其他均return true,即可达到和break相同的效果 function find(arr2, e ...
- 51nod 1274 最长递增路径(DP)
一开始自己想了一种跑的巨慢..写了题解的做法又跑的巨快..一脸懵逼 显然要求边权递增就不可能经过重复的边了,那么设f[i]为第i条边出发能走多远就好了,这是我一开始的写法,可能dfs冗余状态较多,跑的 ...
- git使用笔记(十一)rebase
By francis_hao Oct 22,2017 git-rebase,改变commit的基础参照 概要 git rebase [-i | --interactive] [options ...
- NYOJ 740 DP
“炫舞家“ST 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 ST是一个酷爱炫舞的玩家.TA很喜欢玩QQ炫舞,因此TA也爱屋及乌的喜欢玩跳舞机(Dance Danc ...
- C# 生成订单号的几种方式
public class RandomNumber { public static object _lock = new object(); ; public string GetRandom1() ...
- 2015/8/28 Python基础(2):对象
Python用对象模型来存储数据.构造任何类型的值都是一个对象.Python对象都有是三个特性:身份,类型和值 身份是每个对象的唯一身份标识.任何对象都可以用内建函数id()来得到身份.如: > ...
- PHP网页架站
目前,Windows下已经有集成的PHP网页架站工具,例如:AppServ.WampServer.这些软件将Apache.PHP.MySQL.phpMyAdmin集成到一起,极大地方便了开发者架站.但 ...
- RDLC - 后台代码直接导出Excel/PDF/Word格式
最近做报表功能,用到了.net的报表组件rdlc. 其中有个功能就是后台代码直接输出Excel/PDF/Word格式的文件,网上看了些资源,做个总结: 参考地址 我直接贴出代码: //自动导出exce ...
- 【51NOD】独木舟
[算法]贪心 [题解]比较经典,用l,r两个定位指针分别从左右向中间推进. #include<cstdio> #include<algorithm> #include<c ...