Django--中间件详解
Django的中间件相当于一个轻量级,底层的插件系统,可以接入到Django的请求和响应的处理过程,修改Django的输入和输出.
中间件无侵入式的开发方式增强了django 的健壮性.
中间件的定义方法
在users应用中新建一个middleware.py文件,# 此文件中定义中间件,补充额外的业务逻辑def my_middleware(get_response):print('init 被调用') # 此处代码仅在Django第一次配置和初始化的时候执行 def middleware(request):print('before request 被调用') # 此处代码在每个请求处理视图函数前被调用response = get_response(request)print('after response 被调用') # 此处代码会在每个请求处理视图函数之后被调用return responsereturn middleware再定义另外一个中间件 middlware2
定义好中间件后,需要在settings.py 文件中添加注册中间件
# 中间件(flask请求勾子)MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware',#'django.middleware.csrf.CsrfViewMiddleware', #此处是csrf防护 注释代表不要csrf防护'django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',# 注册中间件的地方'middleware.my_middleware','middleware.my_middleware2',]
定义视图函数测试:def demo_view(request):print('view 视图被调用')return HttpResponse('OK')注意:Django运行在调试模式下,中间件init部分有可能被调用两次。
执行结果:
init2 被调用init 被调用before request 被调用before request 2 被调用view 视图被调用after response 2 被调用after response 被调用
中间件的执行顺序:
- 详解Python的Django框架中的中间件
- Django----中间件详解
- 详解Python的Django框架中的中间件
- 详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
- Django教程笔记之中间件middleware详解
- django学习笔记---如何自定义中间件详解
- 详解Django中间件执行顺序
- 详解Django中间件的5种自定义方法
- Django Model层字段类型详解
- Django模型层Meta内部类详解
- django基础之数据库操作方法(详解)
- 详解通过Nginx部署Django(基于ubuntu)
- Django+MySQL安装配置详解(Linux)[更新为1.8.2版]
- pycharm django templates css js html static文件详解
- Django中间件
- Django模型层Meta内部类详解 2014
- 详解vue+webpack+express中间件接口使用
- Django模型层Meta内部类详解
- 淘宝JAVA中间件Diamond详解(2)---原理介绍
- 利用Celery实现Django博客PV统计功能详解