目录
一、中间件 mymiddelware.py 文件
from django.utils.deprecation import MiddlewareMixin from django.shortcuts import render, HttpResponse, redirect class MyMiddleware(MiddlewareMixin): def process_request(self, request): url = request.get_full_path() print(url) # print(request.path) is_login = request.session.get('is_login', None) if is_login or url.startswith('/appCsrf/csrf_login/'): print(is_login) return else: print('is_login is none') # 返回login页面重新登陆,next表示从哪个页面返回 return redirect('/appCsrf/csrf_login/?next=%s' % url) # return redirect('/appCsrf/csrf_login/') def process_response(self, request, response): return response
二、视图文件
from django.shortcuts import render, HttpResponse, redirect # Create your views here. def login(request): if request.method == 'GET': return render(request, 'csrf_login.html') else: # 从url内获取next属性值 next = request.GET.get('next') name = request.POST.get('name') pwd = request.POST.get('pwd') if name == 'name' and pwd == '123': if next: # 若为他页跳转,返回跳转前他页(主页面) obj = redirect(next) else: # 若非他页跳转,返回指定页面(主页面) obj = redirect('/index/') # obj.set_cookie('is_login', True) request.session['is_login'] = True return obj else: return HttpResponse('用户名或密码错误') def shopping(request): return HttpResponse('确认登陆,可进行购物操作')
三、前端提交数据
<form action="" method="post"> {% csrf_token %} <input type="text" name="name"> <input type="text" name="pwd"> <input type="submit" value="提交"> </form>