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

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