繼續(xù)上一篇,我們?cè)诶^續(xù)完成其他頁面設(shè)置之前,先把老師登錄后的頁面給創(chuàng)建出來,并且學(xué)生與老師不能互訪門戶,以及實(shí)現(xiàn)注銷功能。
回到【實(shí)戰(zhàn)演練】Python+Django網(wǎng)站開發(fā)系列02-Django完整開發(fā)環(huán)境部署,對(duì)于老師頁面,具有以下模塊。
1、需求分析
老師登錄后頁面包括如下功能:
1)個(gè)人信息:登錄后顯示老師個(gè)人信息,以及自己需要授課的課程名、上課時(shí)間、上課地點(diǎn)。
2)成績錄入:可以查看自己授課的課程下面的學(xué)生,并且可以錄入成績,成績僅能為0~100分,超出范圍會(huì)提示無效,可以多次修改成績。
3)修改密碼:修改用戶密碼
4)注銷:注銷后自動(dòng)返回登錄頁面
其中注銷可以與學(xué)生的注銷共用,但是修改密碼不行,因?yàn)辄c(diǎn)擊修改密碼頁面后,學(xué)生的修改密碼頁面引用的是BASE02的導(dǎo)航頁,如果老師門戶的導(dǎo)航頁是BASE03,而修改密碼頁面共用,在老師門戶點(diǎn)擊“修改密碼”之后,就會(huì)跳轉(zhuǎn)到了BASE02頁去了,會(huì)出現(xiàn)BUG。
2、代碼開發(fā)
因此現(xiàn)在需要先創(chuàng)建BASE03,BASE03可以在BASE02基礎(chǔ)上復(fù)制粘貼修改,修改標(biāo)簽與href后面跳轉(zhuǎn)的頁面
{%?.==?%}?{%?%}?個(gè)人信息{%?.==?%}?{%?%}?成績錄入{%?.==?%}?{%?%}?修改密碼注銷
然后創(chuàng)建老師個(gè)人信息、成績錄入,老師修改密碼3個(gè)html頁面,并且在view里面
(request): ????render_to_response(())
(request): ????render_to_response(())
(request): ????render_to_response(())
國際慣例,在views里面添加函數(shù),在urls里面添加路由。
url(enterscore)url(tmopasswd)url(tchinfo)
然后訪問127.0.0.1:8000/index,用老師賬戶登錄看看是否能夠成功跳轉(zhuǎn)。
剩下需要做兩個(gè)事情:
1、注銷:
添加注銷的view函數(shù),
(request): ????auth.logout(request) ????HttpResponseRedirect()
增加urls路由:
url(r'^logout/',?logout),
BASE02、03的注銷標(biāo)簽綁定url
注銷
然后刷新,重新登錄,點(diǎn)擊注銷按鈕,發(fā)現(xiàn)可以跳轉(zhuǎn)回index.html登錄頁。
2、限制學(xué)生門戶的所有頁面不要給老師用戶登錄,老師門戶所有頁面
這個(gè)需要再在每個(gè)頁面前面增加裝飾器,判定登錄賬號(hào)的權(quán)限,來看看是否有權(quán)限進(jìn)入頁面。permission_required后面填寫之前用戶組給予了的權(quán)限。
每個(gè)頁面都需要加這個(gè)@permission_required裝飾器。不同門戶的頁面添加學(xué)生或者老師的權(quán)限要求。
(==) (request): ????render_to_response(())
(==) (request): ????data?=?student.objects.all() ????render_to_response(())
測試:
不登錄,直接訪問頁面url如127.0.0.1:8000/queryscore,發(fā)現(xiàn)無法訪問,報(bào)錯(cuò)如下:
使用老師賬號(hào)登錄,直接訪問url127.0.0.1:8000/queryscore,顯示403 無權(quán)限訪問。
使用學(xué)生賬號(hào)從index登錄,然后正常訪問queryscore頁面,訪問正常。
3、修改密碼頁面直接引用django admin的修改密碼
編輯mopasswd與tmopasswd.html,我們用iframe子框架來在我們的頁面里面嵌套django admin自帶的密碼修改。
{%?%} ????::{%?%}
然后修改views里面的函數(shù),獲取當(dāng)前登錄用戶session。
(request): ????username?=?request.session.get() ????render_to_response(())
(request): ????username?=?request.session.get() ????render_to_response(())
查看效果,發(fā)現(xiàn)iframe大小不夠,再回去手動(dòng)調(diào)整iframe的width與height即可。
回顧:
1、我們實(shí)現(xiàn)了使用django admin自帶的用戶創(chuàng)建功能創(chuàng)建用戶;
2、實(shí)現(xiàn)了index與后臺(tái)數(shù)據(jù)庫交互進(jìn)行用戶認(rèn)證鑒權(quán)(使用django admin自帶的auth模塊),實(shí)現(xiàn)了登錄認(rèn)證效果。
3、實(shí)現(xiàn)了學(xué)生登錄通過后重定向到學(xué)生門戶,老師登錄通過后重定向到老師門戶。
4、實(shí)現(xiàn)了注銷功能。
5、未登錄無法直接訪問所有子頁面。
6、學(xué)生無法訪問老師門戶任何頁面,同樣老師無法訪問學(xué)生門戶任何頁面,即使記住了url直接訪問。
7、實(shí)現(xiàn)了修改密碼。
至此,靜態(tài)頁面,導(dǎo)航欄,用戶登錄驗(yàn)證,注銷,修改密碼,防止未登錄/無權(quán)限的用戶訪問頁面等功能都已經(jīng)實(shí)現(xiàn)了。
下一篇開始,主要就剩下前端與后端與數(shù)據(jù)庫的交互 增、刪、改 了(查已經(jīng)做了)。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
