1. 程式人生 > >Django登入與登出

Django登入與登出

一: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/,表示登入成功後跳轉到哪個頁面。