繼續上一篇,我們在繼續完成其他頁面設置之前,先把老師登錄后的頁面給創建出來,并且學生與老師不能互訪門戶,以及實現注銷功能。


回到【實戰演練】Python+Django網站開發系列02-Django完整開發環境部署,對于老師頁面,具有以下模塊。

1、需求分析

老師登錄后頁面包括如下功能:

1)個人信息:登錄后顯示老師個人信息,以及自己需要授課的課程名、上課時間、上課地點。

2)成績錄入:可以查看自己授課的課程下面的學生,并且可以錄入成績,成績僅能為0~100分,超出范圍會提示無效,可以多次修改成績。

3)修改密碼:修改用戶密碼

4)注銷:注銷后自動返回登錄頁面

其中注銷可以與學生的注銷共用,但是修改密碼不行,因為點擊修改密碼頁面后,學生的修改密碼頁面引用的是BASE02的導航頁,如果老師門戶的導航頁是BASE03,而修改密碼頁面共用,在老師門戶點擊“修改密碼”之后,就會跳轉到了BASE02頁去了,會出現BUG。

2、代碼開發

因此現在需要先創建BASE03,BASE03可以在BASE02基礎上復制粘貼修改,修改標簽與href后面跳轉的頁面

            {%?.==?%}?{%?%}?個人信息{%?.==?%}?{%?%}?成績錄入{%?.==?%}?{%?%}?修改密碼注銷
          

然后創建老師個人信息、成績錄入,老師修改密碼3個html頁面,并且在view里面

            (request):
????render_to_response(())
          
            (request):
????render_to_response(())
          
            (request):
????render_to_response(())
          

國際慣例,在views里面添加函數,在urls里面添加路由。

            url(enterscore)url(tmopasswd)url(tchinfo)
          

然后訪問127.0.0.1:8000/index,用老師賬戶登錄看看是否能夠成功跳轉。

【實戰演練】Python+Django網站開發系列08-django門戶互訪控制與注銷、修改密碼_第1張圖片

【實戰演練】Python+Django網站開發系列08-django門戶互訪控制與注銷、修改密碼_第2張圖片

剩下需要做兩個事情:

1、注銷:

添加注銷的view函數,

            (request):
????auth.logout(request)
????HttpResponseRedirect()
          

增加urls路由:

            url(r'^logout/',?logout),
          

BASE02、03的注銷標簽綁定url

            注銷
          

然后刷新,重新登錄,點擊注銷按鈕,發現可以跳轉回index.html登錄頁。

【實戰演練】Python+Django網站開發系列08-django門戶互訪控制與注銷、修改密碼_第3張圖片

【實戰演練】Python+Django網站開發系列08-django門戶互訪控制與注銷、修改密碼_第4張圖片

2、限制學生門戶的所有頁面不要給老師用戶登錄,老師門戶所有頁面

這個需要再在每個頁面前面增加裝飾器,判定登錄賬號的權限,來看看是否有權限進入頁面。permission_required后面填寫之前用戶組給予了的權限。

每個頁面都需要加這個@permission_required裝飾器。不同門戶的頁面添加學生或者老師的權限要求。

            (==)
(request):
????render_to_response(())
          
            (==)
(request):
????data?=?student.objects.all()
????render_to_response(())
          


測試:

不登錄,直接訪問頁面url如127.0.0.1:8000/queryscore,發現無法訪問,報錯如下:

【實戰演練】Python+Django網站開發系列08-django門戶互訪控制與注銷、修改密碼_第5張圖片

使用老師賬號登錄,直接訪問url127.0.0.1:8000/queryscore,顯示403 無權限訪問。

【實戰演練】Python+Django網站開發系列08-django門戶互訪控制與注銷、修改密碼_第6張圖片

使用學生賬號從index登錄,然后正常訪問queryscore頁面,訪問正常。

【實戰演練】Python+Django網站開發系列08-django門戶互訪控制與注銷、修改密碼_第7張圖片


3、修改密碼頁面直接引用django admin的修改密碼

編輯mopasswd與tmopasswd.html,我們用iframe子框架來在我們的頁面里面嵌套django admin自帶的密碼修改。

            {%?%}
????::{%?%}
          

然后修改views里面的函數,獲取當前登錄用戶session。

            (request):
????username?=?request.session.get()
????render_to_response(())
          
            (request):
????username?=?request.session.get()
????render_to_response(())
          

查看效果,發現iframe大小不夠,再回去手動調整iframe的width與height即可。

【實戰演練】Python+Django網站開發系列08-django門戶互訪控制與注銷、修改密碼_第8張圖片


回顧:

1、我們實現了使用django admin自帶的用戶創建功能創建用戶;

2、實現了index與后臺數據庫交互進行用戶認證鑒權(使用django admin自帶的auth模塊),實現了登錄認證效果。

3、實現了學生登錄通過后重定向到學生門戶,老師登錄通過后重定向到老師門戶。

4、實現了注銷功能。

5、未登錄無法直接訪問所有子頁面。

6、學生無法訪問老師門戶任何頁面,同樣老師無法訪問學生門戶任何頁面,即使記住了url直接訪問。

7、實現了修改密碼。

至此,靜態頁面,導航欄,用戶登錄驗證,注銷,修改密碼,防止未登錄/無權限的用戶訪問頁面等功能都已經實現了。

下一篇開始,主要就剩下前端與后端與數據庫的交互 增、刪、改 了(查已經做了)。