上节初步实现了登录和注册模块,这节我们进一步实现“记住我”功能。
大体功能分为以下模块:
1.在登录时如果勾选记住我,那么就将用户username存进cookie中,跳转到index页面;
2.此时,如果不进行登出,如果直接返回登录页面,那么就会判断cookie中是否存在username,如果存在,就直接跳转到Index界面,也就是不用再一次登录;
3.如果进行登出,则删除cookie中的username,并返回登录界面;
4.如果登录时不勾选记住我,那么跳转到index界面后,在访问登录界面不会继续跳转到Index界面;
5.若直接访问Index界面,会判断cookie中是否存在username,如果不存在,则会提示对不起,请先登录,三秒之后跳转到登录界面。
urls.py
from django.urls import pathfrom . vIEwsapp_name='login'urlpatterns=[ path('',vIEws.login,name=),path(register/',vIEws.register,1)">registerregister/savereg/saveregtologin/tologinlogout/logoutindex/indexVIEw Codefrom django.shortcuts render,redirectfrom .models Users datetime# Create your vIEws here.def login(request): if request.get_signed_cookie(usernameSSS None: username = request.get_signed_cookie(None) return render(request,login/index.HTML: username}) login/login.HTML) register(request): login/register.HTML) save_register(request): if request.method == POST: phone=request.POST.get(phone) username=request.POST.get() password=request.POST.get(password) repassword=request.POST.get(repassword) birthday=request.POST.get(birthday) errormsg='' if phone =='': errormsg=手机号不能为空' elif password ==密码不能为空else: if password!=repassword: errormsg=确认密码与密码不一致if errormsg == : Users.objects.create(phone=phone,username=username,password=password,birthday=birthday,regday=datetime.datetime.Now().strftime(%Y-%m-%d)) login/pagejump.HTML) errormsg:errormsg}) to_login(request): ) remember=request.POST.get(rememberif phone == ': 用户名不能为空}) try: user_obj = Users.objects.get(phone=phone) except Users.DoesNotExist: ':账号不存在,请重新输入}) pwd=user_obj.password password = request.POST.get(if password != : repwd=password if pwd == repwd: username=user_obj.username if remember is not None: response = render(request,1)">:username}) response.set_signed_cookie("",username,max_age=60 * 60 * 12) return response : : username}) return render(request,'login/index.HTML',{'username':username}) : 密码错误}) check_login(func): def helper(request,*args,**kwargs): None: return func(request,1)">kwargs) login/checklogin.HTML) helper logout(request): response = redirect(/login/") response.delete_cookie( response@check_login index(request): ')
index.HTML
<!DOCTYPE HTML><HTML lang=en"><head> <Meta charset=UTF-8"> <Meta name=vIEwport content=wIDth=device-wIDth,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0"> <Meta http-equiv=X-UA-Compatible" content=IE=edge"> <Title>document</Title></head><body> <h3><p>hello {{username}}</p></h3><span><p><a href={% url 'login:logout'%}">登出</a></p></span></body></HTML>VIEw Code
login.HTML
<!DOCTYPE HTML><HTML lang="> <Title>盒老师</Title> <Meta name=keywords盒老师contentIE=edge,Chrome=1"> <link type=text/CSS" rel=stylesheet" href=/static/login/CSS/login.CSS"> <script type=text/JavaScript" src=/static/login/Js/jquery.min.Js"></script></head><body class=login_bj" ><div zhuce_body" style=position:absolute;left:130px;top:300px;"> <div zhuce_kong login_kuang" > <div zc"> <div bj_baiheight:330px;"> <h3>登录</h3> <form action={% url 'login:tologin'%}" method=post"> <p style=color: red;margin-top: 0px;">{{errormsg}}</p> <input name=" type=text" kuang_txt" placeholder=手机号"> <input name=密码"> <div> <input name=checkBox" value=" ><span>记住我</span><a href=#float:rigth;">忘记密码</a> </div> <div> <p>没有账号?<a href={% url 'login:register'%}">立即注册</a></p> </div> <input style=margin-top:2px;" name=登录submitbtn_zhuce"> </form> </div> </div> </div></div> </body></HTML>VIEw Code
checklogin.HTML
<body><div align=centerborder: 1px solID blueviolet; position:absolute;left:500px;top: 200px;wIDth: 430px;height: 50px;> <p style=text-align: center;Font-size: 20px;">对不起!请先登录!还有<span ID=sp">3</span>秒跳转到登录界面...</p></div><script> //onload事件会在页面加载完后立即发生 onload=function () { //etInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。 setInterval(go,1000) }; var x=2; function go() { if (x>=0){ document.getElementByID(").innerText=x; } { location.href={% url 'login:login'%}; } x--; }</script></body>VIEw Code
到这里,登录注册也基本告一段落了。同时我的django之旅也暂时告一段落了,花了接近一个月的时间,也算是有所收获,找时间会将所有代码上传至github。接下来准备去看自然语言处理了,极大可能是自己以后工作的内容。
总结以上是内存溢出为你收集整理的实战django(二)--登录实现记住我全部内容,希望文章能够帮你解决实战django(二)--登录实现记住我所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)