1. 程式人生 > >django登入許可權跳轉

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登入許可權跳轉:

建立一個登陸頁面:
  1. <!DOCTYPE html
    >
  2. <htmllang="en">
  3. <head>
  4.     <metacharset="UTF-8">
  5.     <title>Title</title>
  6. </head>
  7. <body>
  8. <formaction="/kake/login"method="post">
  9.     {% csrf_token %}  
  10.     使用者名稱:<inputtype="text"name="username"/><span>{{ mess }}</span><br/>
  11.     密碼:<input
    type="password"name="pwd"/><br/>
  12.     <inputtype="submit"value="登入"/>
  13. </form>
  14. </body>
  15. </html>
再建立一個成功登陸並可以跳轉的頁面:
  1. <!DOCTYPE html>
  2. <htmllang="en">
  3. <head>
  4.     <metacharset="UTF-8">
  5.     <title>Title</title>
  6. </head>
  7. <body>
  8. ---------歡迎訪問部落格管理系統---------  
  9. {% if request.session.username is not None %}  
  10. 歡迎{{ bloguser.userName }}<br/>
  11. <ahref="/kake/logout">登出</a>
  12. {% else %}  
  13. <ahref="/kake/login">登入</a>
  14. {% endif %}  
  15. <ahref="/kake/a">a登陸後才可以訪問的頁面</a>
  16. <ahref="/kake/b">b未登入也可以訪問的頁面</a>
  17. </body>
  18. </html>
跳轉頁面a,b:
  1. <!DOCTYPE html>
  2. <htmllang="en">
  3. <head>
  4.     <metacharset="UTF-8">
  5.     <title>a</title>
  6. </head>
  7. <body>
  8. aaaaaaaaaa  
  9. 登陸後才可以訪問的頁面  
  10. <ahref="/kake/success">success</a>
  11. </body>
  12. </html>
  1. <!DOCTYPE html>
  2. <htmllang="en">
  3. <head>
  4.     <metacharset="UTF-8">
  5.     <title>b</title>
  6. </head>
  7. <body>
  8. --------------  
  9. 未登入也可以訪問的頁面  
  10. </body>
  11. </html>
在APP名/urls.py中,新增:
  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中,新增:
  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. #登陸後才可以訪問的頁面