中间件只是功能。

对于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中是否存储信息。

点个赞呗~

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部