Django中间件

中间件只是功能。

对于process_request方法:

  • 无返回或返回None,请求继续向后走
  • 有返回值,return directreturn HttpResponsereturn render,不会继续向后走,直接执行process_response函数

可以自己定义属于自己的中间件。

# 自行创建一个文件名为 md.py

from django.utils.deprecation import MiddlewareMixin
from django.shortcuts import HttpResponse, redirect

class MiddlewareDemo(MiddlewareMixin):
	def process_request(self, request):
		# 无需做验证,放行
		if request.path_info in ['/example'/]:
			return 

		# 获取用户session的信息
		userInfo = request.session.get("userInfo")

		# 有值,表示已登录,则继续
		if userInfo:
			return
		
		# 无值
		return redirect('/example/')

	def process_response(self, request, response):
		# 必须得返回
		return response

创建好自定义的Middleware之后,需要在settings.py里植入。

MIDDLEWARE = [
	....
	# 添加下面一行
	"utils.md.MiddlewareDemo",
]


中间件的应用场景

  • 日志,获取访问时,请求的 IP 地址并记到文件中。
  • 权限校验,有权限返回None,无权限就返回HttpResponse("无权访问")
  • 登录判定,判断用户的session中是否存储信息。

点个赞呗~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值