【實戰演練】Python+Django網站開發系列07-django後臺管理與身份驗證

本篇介紹django的後臺管理,以及使用後臺默認的用戶帳號,實現用戶登陸身份驗證。html


一、建立管理員帳戶
前端

python manage.py createsuperuser

輸入用戶名,郵箱,密碼python

006.png

二、登陸管理頁面數據庫

http://localhost:8000/admin

007.png

三、建立用戶組與用戶django

建立用戶組,而且對用戶組授予權限。bash

008.png

009.png

010.png

建立用戶,劃入用戶組,而且啓用帳戶。session

011.png

012.png

註銷,使用用戶帳戶登陸嘗試。ide

013.png

014.png

四、修改views.py函數

咱們計劃調用django admin自帶的用戶管理與登陸認證,這樣就不須要本身重寫。post

導入對應的包

django.http HttpResponseRedirect
django.contrib auth
django.contrib.auth.decorators login_requiredpermission_required

而後編寫login_action函數

(request):
    request.method == :
        username = request.POST.get()                                       #從前端的POST請求獲取用戶名
        password = request.POST.get()                                       #從前端的POST請求獲取密碼
        userinfo = auth.authenticate(=username=password)            #利用django admin的auth模塊認證鑑權
        userinfo :
            auth.login(requestuserinfo)                            #利用auth模塊獲取當前已登陸的用戶session
            request.session[] = username
            stuinfo = student.objects.filter(=username)     #判斷認證成功的用戶是否在學生表裏面存在,是則是學生,不然是老師
            stuinfo:
                HttpResponseRedirect()             #跳轉到老師我的信息頁
            :
                HttpResponseRedirect()             #跳轉到老師我的信息頁
        :
            render_to_response(())        #用戶名密碼不正確,跳轉回index.html頁

上述代碼,其實就是用前段頁面的POST動做獲取username與password,先認證用戶名密碼是否正確。若是正確,正面django用戶數據庫有此用戶。

再判斷該用戶是否存在student表裏面,若是是,就是學生,則利用HttpResponseRedirect重定向頁面到學生我的信息頁(stuinfo),若是不存在student表裏面,那麼確定是老師,就跳轉tchinfo的老師我的信息頁。

若是用戶名密碼認證不經過,就依然跳轉回index.html登陸頁。

#注意記得將以前測試的login函數刪除了,還有原來index.html裏面增長的測試代碼須要刪除。

五、修改urls

老規矩,增長了函數,必須到urls裏面添加路由。

url(r'^login_action/', login_action),

六、修改前端頁面

index.html的<form>,若是隻設置method='post',表單提交的數據,默認是提交到index函數的。

如今須要手動指定將數據提交給login_action函數,須要增長action而且指向login_action函數。

<form class="form-horizontal" method="post"  action="/login_action/">


七、數據庫手動修改數據

咱們將django admin裏面建立的用戶,student1\student2分別手動添加到student表,以及teacher1和teacher2手動添加到teacher表。

015.png

而後測試index.html輸入student1用戶名密碼,嘗試登陸驗證跳轉。發現用戶名密碼正確後,可以成功跳轉。

016.png

017.png

問題是,若是咱們記下來url,不輸入用戶名密碼,當前是能夠直接訪問127.0.0.1:8000/stuinfo的,那麼怎麼強制必需要登陸了。

只須要在views裏面,在stuinfo函數前面加上裝飾器@login_required便可。這樣就會強制必需要登陸後才能訪問頁面了。

(request):


目前因爲沒有作註銷功能,使用某個帳戶登陸後,如何註銷測試下一項呢?只能手動訪問127.0.0.1:8000/admin,註銷後再測試。

註銷後直接訪問127.0.0.1:8000/stuinf,發現已經頁面已經不能不登陸匿名訪問了。

018.png

相關文章
相關標籤/搜索