ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Django 项目 装饰器版登录校验 从哪个页面跳转到登录页的,登录后就返回到那个页面

2022-04-06 21:31:48  阅读:193  来源: 互联网

标签:登录 get url request ret next 跳转 login 页面


urls.py 文件设置:

views.py文件设置:

from functools import wraps
def check_login(func):
@wraps(func) #装饰器修复技术
def inner(request,*args,**kwargs):
ret= request.get_signed_cookie("is_login",default="0",salt="zhangces123")
if ret== "1":
return func(request,*args,**kwargs)
else:
next_url =request.path_info
return redirect("/login/?next={}".format(next_url))
return inner


def login(request):
if request.method == "POST":
user = request.POST.get("user")
password = request.POST.get("pwd")
# 从url中获取到next参数
next_url = request.GET.get("next") 这是在post请求中 获取get请求的数据 所以要在修改html的action信息
print(next_url)
if user == "alex" and password == "123456":
if next_url: #如果有next_url 就跳转到next_url页面
ret=redirect(next_url)
else: #没有就跳转到home页面
ret = redirect("/home/")
# ret.set_cookie("is_login","1") 这是设置不加盐的cookie
# 设置加盐的cookie
ret.set_signed_cookie("is_login","1",salt="zhangces123") #salt:加盐
return ret
return render(request,"login.html")
@check_login
def index(request):
return render(request,"index.html")

login.html页面:
<form action="{{ request.get_full_path }}" method="post">    #这里的action信息 要么为空  要么是request.get_full_path

标签:登录,get,url,request,ret,next,跳转,login,页面
来源: https://www.cnblogs.com/zs0621/p/16109640.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有