Django基础之Session版登录验证
2024-08-29 06:30:04
from functools import wraps def check_login(func):
@wraps(func)
def inner(request, *args, **kwargs):
next_url = request.get_full_path()
if request.session.get("user"):
return func(request, *args, **Kwargs)
else:
return redirect("/login/?next={}".format(next_url))
return inner def login(request):
if request.method == "POST":
username = request.POST.get("username")
password = request.POST.get("password") if username == "yang" and password = "123":
# 设置session
request.session["user"] = user
#获取跳到登录页面之前的URL
next_url = request.GET.get("next")
# 如果有,就跳转到登录之前的URL
if next_url:
return redirect(next_url)
# 否则默认跳转到index页面
else:
return redirect("/index/")
return render(request, "login.html") @check_login
def logout(request):
# 删除所有当前请求相关的session
request.session.delete()
return redirect("/login/") @check_login
def index(request):
current_user = request.session.get("user", None)
return render(request, "index.html", {"user": currrent_user})
最新文章
- 烂泥:更换ESXI5.0管理网卡及管理IP地址
- HDNOIP201404最短路径
- CF---(452)A. Eevee
- C# 调用Dll 传递字符串指针参(转)
- iOS中ARC内部原理
- Centos虚拟机安装分区分配
- SEO-外部链接类型以及标准
- css百分比参照大总结
- Vuex state 状态浅解
- BeautifulSoup 抓取网站url
- Qt Create or VS 2015 使用 Opencv330 相机静态库链接错误如何解决?
- win7上Android环境搭建以及调试
- emWin仪表界面设计,含uCOS-III和FreeRTOS两个版本
- 让老板虎躯一震的前端技术,KPI杀手
- Asible第三章:roles--小白博客
- Hyperledger Fabric 架构梳理
- (21)jq动画
- Leetcode 树 Populating Next Right Pointers in Each Node II
- Yii 的session 实现返回上上页面
- Mindoc搭建流程