Django之自定制中间件及实战示例(其他篇七)

本文介绍了Django中间件的基本概念,并通过实战示例详细讲解了如何创建、注册和使用自定义中间件,包括在settings中配置、定义URL和相关函数,以及观察中间件的生命周期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇:Django之缓存六种方式及实战示例(其他篇六)点击跳转
目录篇:Django之其他目录篇 点击跳转
下一篇:Django之信号及实战示例(其他篇八)点击跳转

目录


中间件简介

简单理解就是每个中间件都是一个url对应的处理函数
用户请求url----->中间件请求和响应和异常进行处理-->url对应函数接收用户请求响应处理

实战示例

    1.创建Django项目

      Django之创建项目【二】:https://blog.csdn.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之缓存六种方式及实战示例(其他篇六)点击跳转
目录篇:Django之其他目录篇 点击跳转
下一篇:Django之信号及实战(其他篇八)点击跳转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值