【實戰演練】Python+Django網站開發系列08-django門戶互訪控制與註銷、修改密碼

繼續上一篇,咱們在繼續完成其餘頁面設置以前,先把老師登陸後的頁面給建立出來,而且學生與老師不能互訪門戶,以及實現註銷功能。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,用老師帳戶登陸看看是否可以成功跳轉。

001.png

002.png

剩下須要作兩個事情:

一、註銷:

添加註銷的view函數,

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

增長urls路由:

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

BASE0二、03的註銷標籤綁定url

註銷

而後刷新,從新登陸,點擊註銷按鈕,發現能夠跳轉回index.html登陸頁。

003.png

004.png

二、限制學生門戶的全部頁面不要給老師用戶登陸,老師門戶全部頁面

這個須要再在每一個頁面前面增長裝飾器,斷定登陸帳號的權限,來看看是否有權限進入頁面。permission_required後面填寫以前用戶組給予了的權限。

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

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


測試:

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

003.jpg

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

004.jpg

使用學生帳號從index登陸,而後正常訪問queryscore頁面,訪問正常。

005.jpg


三、修改密碼頁面直接引用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便可。

005.png


回顧:

一、咱們實現了使用django admin自帶的用戶建立功能建立用戶;

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

三、實現了學生登陸經過後重定向到學生門戶,老師登陸經過後重定向到老師門戶。

四、實現了註銷功能。

五、未登陸沒法直接訪問全部子頁面。

六、學生沒法訪問老師門戶任何頁面,一樣老師沒法訪問學生門戶任何頁面,即便記住了url直接訪問。

七、實現了修改密碼。

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

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

相關文章
相關標籤/搜索