繼續上一篇,咱們在繼續完成其餘頁面設置以前,先把老師登陸後的頁面給建立出來,而且學生與老師不能互訪門戶,以及實現註銷功能。html
回到【實戰演練】Python+Django網站開發系列02-Django完整開發環境部署,對於老師頁面,具備如下模塊。前端
一、需求分析數據庫
老師登陸後頁面包括以下功能:django
1)我的信息:登陸後顯示老師我的信息,以及本身須要授課的課程名、上課時間、上課地點。後端
2)成績錄入:能夠查看本身授課的課程下面的學生,而且能夠錄入成績,成績僅能爲0~100分,超出範圍會提示無效,能夠屢次修改爲績。session
3)修改密碼:修改用戶密碼app
4)註銷:註銷後自動返回登陸頁面框架
其中註銷能夠與學生的註銷共用,可是修改密碼不行,由於點擊修改密碼頁面後,學生的修改密碼頁面引用的是BASE02的導航頁,若是老師門戶的導航頁是BASE03,而修改密碼頁面共用,在老師門戶點擊「修改密碼」以後,就會跳轉到了BASE02頁去了,會出現BUG。ide
二、代碼開發函數
所以如今須要先建立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,用老師帳戶登陸看看是否可以成功跳轉。
剩下須要作兩個事情:
一、註銷:
添加註銷的view函數,
(request): auth.logout(request) HttpResponseRedirect()
增長urls路由:
url(r'^logout/', logout),
BASE0二、03的註銷標籤綁定url
註銷
而後刷新,從新登陸,點擊註銷按鈕,發現能夠跳轉回index.html登陸頁。
二、限制學生門戶的全部頁面不要給老師用戶登陸,老師門戶全部頁面
這個須要再在每一個頁面前面增長裝飾器,斷定登陸帳號的權限,來看看是否有權限進入頁面。permission_required後面填寫以前用戶組給予了的權限。
每一個頁面都須要加這個@permission_required裝飾器。不一樣門戶的頁面添加學生或者老師的權限要求。
(==) (request): render_to_response(())
(==) (request): data = student.objects.all() render_to_response(())
測試:
不登陸,直接訪問頁面url如127.0.0.1:8000/queryscore,發現沒法訪問,報錯以下:
使用老師帳號登陸,直接訪問url127.0.0.1:8000/queryscore,顯示403 無權限訪問。
使用學生帳號從index登陸,而後正常訪問queryscore頁面,訪問正常。
三、修改密碼頁面直接引用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便可。
回顧:
一、咱們實現了使用django admin自帶的用戶建立功能建立用戶;
二、實現了index與後臺數據庫交互進行用戶認證鑑權(使用django admin自帶的auth模塊),實現了登陸認證效果。
三、實現了學生登陸經過後重定向到學生門戶,老師登陸經過後重定向到老師門戶。
四、實現了註銷功能。
五、未登陸沒法直接訪問全部子頁面。
六、學生沒法訪問老師門戶任何頁面,一樣老師沒法訪問學生門戶任何頁面,即便記住了url直接訪問。
七、實現了修改密碼。
至此,靜態頁面,導航欄,用戶登陸驗證,註銷,修改密碼,防止未登陸/無權限的用戶訪問頁面等功能都已經實現了。
下一篇開始,主要就剩下前端與後端與數據庫的交互增、刪、改了(查已經作了)。