本篇介紹django的後臺管理,以及使用後臺默認的用戶帳號,實現用戶登陸身份驗證。html
一、建立管理員帳戶
前端
python manage.py createsuperuser
輸入用戶名,郵箱,密碼python
二、登陸管理頁面數據庫
http://localhost:8000/admin
三、建立用戶組與用戶django
建立用戶組,而且對用戶組授予權限。bash
建立用戶,劃入用戶組,而且啓用帳戶。session
註銷,使用用戶帳戶登陸嘗試。ide
四、修改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表。
而後測試index.html輸入student1用戶名密碼,嘗試登陸驗證跳轉。發現用戶名密碼正確後,可以成功跳轉。
問題是,若是咱們記下來url,不輸入用戶名密碼,當前是能夠直接訪問127.0.0.1:8000/stuinfo的,那麼怎麼強制必需要登陸了。
只須要在views裏面,在stuinfo函數前面加上裝飾器@login_required便可。這樣就會強制必需要登陸後才能訪問頁面了。
(request):
目前因爲沒有作註銷功能,使用某個帳戶登陸後,如何註銷測試下一項呢?只能手動訪問127.0.0.1:8000/admin,註銷後再測試。
註銷後直接訪問127.0.0.1:8000/stuinf,發現已經頁面已經不能不登陸匿名訪問了。