Django基础笔记6(Django中间件)

Django自带的中间件
在这里插入图片描述
中间件执行流程

在这里插入图片描述

自定义中间件
在这里插入图片描述

				Middle.py
class Middle1(MiddlewareMixin):
    def process_request(self, request):
        print("中间件request")

    def process_response(self, request, response):
        print('中间件response')
        return response

#常用的方法
class Middle(MiddlewareMixin):
	def process_request(self,request):
		pass
	def process_response(self,request,response):
		pass
	def process_view(self,request,callback,callback_args,callback_kwargs):
		pass
	def process_exception(self,request,exception):	#处理函数出现错误时执行
		pass
	def process_template_response(self, request, response):
		pass		#其中request 是 HttpRequest 对象, response 是一个由Django view或者中间件返回的TemplateResponse 对象,process_template_response()在 view 使用 render 渲染一个模版对象完成之后被调用,它必须返回一个render 方法执行后的response对象。
		
view.py
class cla:
	def __init(self,req):
		self.req=req
	def render(self):		#process_template_response 中间件自动调用render函数
		return Httpresponse('asf')
		
def test(request):	
	return Foo(request)

注册

在这里插入图片描述
效果
在这里插入图片描述
利用中间件判断用户是否登录

class AuthMid(MiddlewareMixin):

    def process_request(self, request):
        now = '/1/'
        white = [
            now + 'login.html',
            now + 'image_code',
            now + 'register.html',
            now + 'index.html'
        ]
        try:
            userinfo = request.session['userinfo']
            userobj = models.User.objects.filter(**userinfo).first()
            request.user = userobj
        # 设置白名单:无需登录即可访问
        except:
            request.user = None
        finally:
            if request.user:
                return
            else:
                url = request.path_info  # url中的问好会变为空格
                if url.strip() in white:
                    return
                else:
                    return redirect('App1Login')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刀刀777999

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值