我正在开发一个网络应用程序,我需要这样的东西:
url(r'^$', 'collection.views.home', name='home'),
url(r'^$', 'collection.views.main', name='main'),
如果用户已通过身份验证,则转到 main,否则返回 home。在主页上,不同的是会有一个登录按钮。但这些应该采用相同的 URL 模式。
我该如何处理?
要处理此类事情,您可以使用单个视图,该视图根据请求状态遵循不同的代码路径。这可能意味着一些简单的事情,比如设置一个上下文变量来激活登录按钮,也可能意味着一些复杂而灵活的事情,比如调用不同的函数 - 例如,您可以编写您的 home 和 main 函数,然后有一个调度视图来调用它们,具体取决于身份验证状态并返回 HTTPResponse 对象。
如果您需要检查的只是身份验证,您甚至不需要设置上下文变量 - 只需使用RequestContext
实例,例如如果您使用render
捷径。如果你这样做,request
将在上下文中,以便您的模板可以检查诸如{% if request.user.is_authenticated %}
.
一些例子:
def dispatch(request):
if request.user.is_authenticated:
return main(request)
else:
return home(request)
或者对于更简单的情况:
def home(request):
if request.user.is_authenticated:
template = "main.html"
else:
template = "home.html"
return render(request, template)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)