-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