基於django的視訊點播網站開發-step8-後臺登入功能

net936發表於2019-02-19

從本講起,我們會介紹後臺管理系統的開發,後臺管理,主要是對資料庫中的資料進行增、刪、改、查的操作,滿足網站管理員對網站的管理與維護的需求。

其實,django自帶的也有一個後臺管理系統(/admin),但是自帶的後臺非常簡陋,無論是介面,還是功能上,都無法滿足使用者的需求,因此,我們自己開發了一套後臺管理系統。

demo地址

測試賬號: admin123

密碼: admin123

後臺管理屬於一個單獨的模組,我們建立一個新的應用,命名為myadmin

python3 manage.py startapp myadmin

好,之後的功能都是基於myadmin來實現的。

因為前面我們已經建立了user模組,所以此處的登入功能是基於之前的user模組來實現的。

首先在myadmin/urls.py中新增登入和登出的路由

from django.urls import path
from . import views

app_name = `myadmin`
urlpatterns = [
    path(`login/`, views.login, name=`login`),
    path(`logout/`, views.logout, name=`logout`),
]

我們來寫login函式

def login(request):
    if request.method == `POST`:
        form = UserLoginForm(request=request, data=request.POST)
        if form.is_valid():
            username = form.cleaned_data.get(`username`)
            password = form.cleaned_data.get(`password`)
            user = authenticate(username=username, password=password)

            if user is not None and user.is_staff:
                auth_login(request, user)
                return redirect(`myadmin:index`)
            else:
                form.add_error(``, `請輸入管理員賬號`)
    else:
        form = UserLoginForm()
    return render(request, `myadmin/login.html`, {`form`: form})

這裡我們使用了user模型中的一個欄位is_staff,用它來表示是否是管理員,所以通過if user is not None and user.is_staff來判斷管理員,如果是管理員,則auth_login登入並redirect跳轉到主頁。

下面我們來實現logout函式

def logout(request):
    auth_logout(request)
    return redirect(`myadmin:login`)

登出後,直接跳轉到login頁面。

效果展示


相關文章