Django登入與登出
阿新 • • 發佈:2018-12-30
一:Django中自帶著登入,驗證功能不用自己再去寫登入功能。
1、從相應模組匯入元件功能
from django.contrib.auth import authenticate,login
2、從request中拿到使用者名稱密碼,驗證,驗證通過獲取到使用者物件,不通過為None。
username = request.POST.get("username") password = request.POST.get("password") user = authenticate(username=username,password=password)
3、通過之後登入使用者,涉及到session操作
if user: # 登入,此時生成了session login(request,user) return redirect("/crm/") else: print("no pass")
二:Django中自帶登出使用者功能。
1、登出標籤
<li><a href="{% url 'logout' %}">登出</a></li> {% url 'logout' %} 表示url中名字為logout的,即name='logout'
2、登出view函式
from django.contrib.auth import authenticate,login,logout def acc_logout(request): logout(request) # 登出 return redirect("/login/") # 頁面跳轉
三:登入時使用者名稱或者密碼出錯時,顯示錯誤提示資訊:
1、前端頁面
<span style="color: red">{{ error_msg }}</span>
2、後臺處理,加上錯誤資訊
error_msg = '' # 正確時 error_msg = 'Wrong username or password!' print(username,password) return render(request,"login.html",{"error_msg":error_msg})# 錯誤時
四:沒有登入時,不能進入主頁面,只能跳轉到登入頁面
具體的哪個檢視函式需要,加在哪個檢視函式上
from django.contrib.auth.decorators import login_required @login_required def dashboard(request): return render(request,"crmapp/dashboard.html")
這樣沒有登入,直接訪問連線到該檢視函式的url時,會跳轉到Django自帶的登入頁面。
需要在settings中配置,
LOGIN_URL = '/login/'
注意url中的next引數:http://127.0.0.1:8080/login/?next=/crm/,表示登入成功後跳轉到哪個頁面。