-1
我正在使用base.html模板頁面上的登錄框開發一個站點。對於需要用戶登錄的所有頁面,我使用login_required裝飾器。不過,我希望用戶能夠在其他頁面上登錄,如果他們想。Django的login_optional裝飾器?
其中的「login_required」裝飾做的事情是處理登錄,除了驗證你顯示你所期望的頁面之前登錄的螺母和螺栓。
我想什麼是這些可選頁面的「login_optional」裝飾(或login_required內可選參數)。我找不到這樣的事情。它是否存在,我只是想念它,或者我是否需要爲這些視圖推出我自己的登錄處理例程?
由於
麥克
EDIT(示例代碼)
模板
<form action="" method="post">
<label for="username">Username:</label>
<input type="text" name="username" value="" id="username" size="10"/>
<label for="password">Password:</label>
<input type="password" name="password" value="" id="password" size="10"/>
<input type="submit" value="Login"/>
<input type="hidden" name="next" value="{{ next|escape }}"/>
</form
>
需要登錄碼
@login_required
def chooseDistributor(request):
user = request.user
# blah stuff deleted
# NOTHING TO HANDLE request.POST!
return render_to_response('choose_distributor.html',locals())
登錄可選代碼
def showWelcome(request):
user = request.user
return render_to_response('welcome/home.html',locals())
參見上面的編輯。總之,我假設login_required裝飾器處理來自登錄表單的POST響應。當然,沒有裝飾器和沒有任何其他POST處理代碼的頁面將無法處理登錄操作。 雖然我可以簡單地將適當的代碼從login_required裝飾複製,這違反了DRY原則,所以我問我的問題。 – jamida 2010-06-22 20:28:43
不,登錄裝飾器不包含該登錄POST處理代碼,只有登錄頁面會執行該操作。但是,任何寫得很好的登錄頁面都會將您重定向回使用登錄裝飾器的視圖。真的,login_required裝飾器不包含任何登錄處理代碼:p。 – KillianDS 2010-06-22 21:17:13
是的,我現在看了,明白了...... >>臉紅「謝謝。 – jamida 2010-06-22 21:39:00