Django之自定制中间件及实战示例(其他篇七)
上一篇:Django之缓存六种方式及实战示例(其他篇六)点击跳转
下一篇:
目录
- 中间件简介
- 实战示例
- 1.创建Django项目
- 2.在project目录下创建任意一个目录和一个xx.py文件
- 3.自己写3个中间件的类继承MiddlewareMixin的请求方法
- 4.settings 注册自定义中间件
- 4.定义url
- 4.定义URL相关函数
- 5.浏览器访问结果
- 6.总结得出生命周期:
中间件简介
简单理解就是每个中间件都是一个url对应的处理函数
用户请求url----->中间件请求和响应和异常进行处理-->url对应函数接收用户请求响应处理
实战示例
1.创建Django项目
Django之创建项目【二】:https://blog.****.net/Burgess_zheng/article/details/86505526
2.在project目录下创建任意一个目录和一个xx.py文件
django文件路径:project_burgess/Middle/m1.py
3.自己写3个中间件的类继承MiddlewareMixin的请求方法
django文件路径:project_burgess/Middle/m1.py
__author__ = "Burgess Zheng" from django.utils.deprecation import MiddlewareMixin class Row1(MiddlewareMixin): def process_request(self,request): print('燕雀焉知鸿鹄之志') def process_view(self,request,view_func,view_func_args,view_func_kwargs): print('思维') def process_response(self,request,response): print('志不坚者智不达') return response from django.shortcuts import HttpResponse class Row2(MiddlewareMixin): def process_request(self,request): print('坚持百忍') # return HttpResponse('有志但是坚持不了没用,滚') def process_view(self,request,view_func,view_func_args,view_func_kwargs): print('知识') def process_response(self,request,response): print('破而后立') return response class Row3(MiddlewareMixin): def process_request(self,request): print('紧守初心') def process_view(self, request, view_func, view_func_args, view_func_kwargs): print('顿悟') def process_response(self,request,response): print('道之艰') return response def process_exception(self,request,exception): if isinstance(exception,NameError): #isinstance:判断该exception异常是否是NameError from django.shortcuts import HttpResponse return HttpResponse('看不破') def process_template_response(self,request,response): #如果Views中的函数返回的对象中,具备有render方法的时候才执行 print('乱世出英雄') return response
4.settings 注册自定义中间件
路径:project_burgess/project_burgess/setting
4.定义url
路径:project_burgess/project_burgess/urls.py
from django.contrib import admin from django.urls import path,re_path #Django版本2.0以上 from project_burgess import views from django.conf.urls import url #Django2.0 from django.conf.urls import include urlpatterns = [ path('admin/', admin.site.urls), #middle path('bur_middle/', views.bur_middle),#最新版本的Django路由使用path #url(r'^bur_middle/', views.bur_middle), #2.0版本使用的是url ]
4.定义URL相关函数
路径:project_burgess/project_burgess/views
__author__ = "Burgess Zheng" #!/usr/bin/env python #-*- coding:utf-8 -*- from django.shortcuts import render,HttpResponse,redirect class Foo: def render(self): return HttpResponse('OK') def bur_middle(request): # sdfefef #执行函数执行不了报错 print('寒风不彻骨,哪来梅花扑鼻香') return Foo()
5.浏览器访问结果
6.总结得出生命周期:
上一篇:Django之缓存六种方式及实战示例(其他篇六)点击跳转
下一篇: