django登录权限跳转


COOKIE和SESSION有什么区别:

1:session 在服务器端,cookie 在客户端(浏览器)。
2:session 默认被存在在服务器的一个文件里(不是内存)。
3:session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id)。
4:session 可以放在 文件、数据库、或内存中都可以。
5:用户验证这种场合一般会用session。


session登录权限跳转:

创建一个登陆页面:
[html]   view plain  copy
  1. <!DOCTYPE html>  
  2. <html lang="en">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title>Title</title>  
  6. </head>  
  7. <body>  
  8. <form action="/kake/login" method="post">  
  9.     {% csrf_token %}  
  10.     用户名:<input type="text" name="username"/><span>{{ mess }}</span><br/>  
  11.     密码:<input type="password" name="pwd"/><br/>  
  12.     <input type="submit" value="登录"/>  
  13. </form>  
  14. </body>  
  15. </html>  
再创建一个成功登陆并可以跳转的页面:
[html]   view plain  copy
  1. <!DOCTYPE html>  
  2. <html lang="en">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title>Title</title>  
  6. </head>  
  7. <body>  
  8. ---------欢迎访问博客管理系统---------  
  9. {% if request.session.username is not None %}  
  10. 欢迎{{ bloguser.userName }}<br/>  
  11. <a href="/kake/logout">注销</a>  
  12. {% else %}  
  13. <a href="/kake/login">登录</a>  
  14. {% endif %}  
  15. <a href="/kake/a">a登陆后才可以访问的页面</a>  
  16. <a href="/kake/b">b未登录也可以访问的页面</a>  
  17. </body>  
  18. </html>  
跳转页面a,b:
[html]   view plain  copy
  1. <!DOCTYPE html>  
  2. <html lang="en">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title>a</title>  
  6. </head>  
  7. <body>  
  8. aaaaaaaaaa  
  9. 登陆后才可以访问的页面  
  10. <a href="/kake/success">success</a>  
  11. </body>  
  12. </html>  
[html]   view plain  copy
  1. <!DOCTYPE html>  
  2. <html lang="en">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title>b</title>  
  6. </head>  
  7. <body>  
  8. --------------  
  9. 未登录也可以访问的页面  
  10. </body>  
  11. </html>  
在APP名/urls.py中,添加:
[python]   view plain  copy
  1. path('login',views.login),  
  2. path('success/<int:id>',views.success,name='success'),  
  3. path('logout',views.login),  
  4. path('a',views.a),  
  5. path('b',views.b),  
最后在views.py中,添加:
[python]   view plain  copy
  1. def login(request):  
  2.     if request.method=='GET':  
  3.         return render(request,'login.html')  
  4.     else:  
  5.         # 接收页面传过来的用户名,密码  
  6.         uname = request.POST.get('username')  
  7.         pwd = request.POST.get('pwd')  
  8.         #从数据库查询是否存在此用户名密码  
  9.         blogUserSet=BlogUser.objects.filter(userName=uname,pwd=pwd)  
  10.         if len(blogUserSet)==1:  
  11.             #跳转到登录的主页面  
  12.             #将用户名放入session  
  13.             session=request.session  
  14.             session['username']=uname  
  15.             if session.get('uri'):  
  16.                 url=session['uri']  
  17.                 session.pop('uri')  
  18.                 return redirect(url)  
  19.             else:  
  20.                 return redirect(reverse('user:success',args=[blogUserSet[0].id]))  
  21.         else:  
  22.             return render(request,'login.html',{'mess':'用户名密码不正确'})  
  23. def success(request,id):  
  24.     blogUser=BlogUser.objects.get(pk=id)  
  25.     return render(request,'success.html',{'bloguser':blogUser})  
  26. def logout(request):  
  27.     #实现注销session  
  28.     session=request.session  
  29.     #session.clear()  
  30.     session.pop('username')  
  31.     #session.flush()  
  32.     return render(request,'success.html')  
  33. #登陆后才可以访问的页面  
  34. def a(request):  
  35.     #判断当前用户是否登录  
  36.     if request.session.get('username'is not None:  
  37.         return render(request,'a.html')  
  38.     else:  
  39.         request.session['uri']=request.get_raw_uri()  
  40.         return render(request,'login.html')  
  41. def b(request):  
  42.     return render(request,'b.html')  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值