- 在项目下面新建一个python文件用来写中间键。
- 将官方文档的模版直接拷贝下来。
文档地址
def simple_middleware(get_response):
# One-time configuration and initialization.
def middleware(request):
# Code to be executed for each request before
# the view (and later middleware) are called.
response = get_response(request)
# Code to be executed for each request/response after
# the view is called.
return response
return middleware
其实就是相当于python中的装饰器,把需要登陆的页面放到一个集合中,修改键名,添加操作。
LOGIN_REQUIRED_URLS = {
'/praise/',
'/criticize/',
'/stat/',
'/data/',
'/export/',
}
def check_login_middleware(get_response):
def middleware(request, *args, **kwargs):
if request.path in LOGIN_REQUIRED_URLS:
if not request.session.get('userid'):
if request.is_ajax():
from django.http import JsonResponse
return JsonResponse({'code': 10002, 'message': '请先登陆'})
else:
from django.shortcuts import redirect
return redirect('/login/?hint=请先登陆')
response = get_response(request, *args, **kwargs)
return response
return middleware
- 最后,中间键的位子千万不要放错了!!!
检查用户是否登陆一定要放在SessionMiddleware的下面,否则会报错!!