当请求/page-one
网址时,如果用户已通过身份验证,则我想使用view_a
,来宾访问者则使用view_b
。
代码应如下所示:
def dummy(request):
if request.user.is_authenticated():
print 'authuser'
return view_a(request)
else:
print 'unauth user'
return view_b(request)
如何在Django中实现这一目标?
我看了看文档,但是找不到与此有关的任何指南。
答案 0 :(得分:2)
您可以使用is_authenticated
在视图中使用它
if user.is_authenticated:
return render(request, 'polls/detail.html', {'poll': p})
else:
return render(request, 'polls/another-detail.html', {'poll': p})
答案 1 :(得分:1)
要重定向到不同的视图(而不仅仅是渲染不同的模板)
from django.urls import reverse
from django.http import HttpResponseRedirect
...
if user.is_authenticated:
return HttpResponseRedirect(reverse('some_detail', kwargs={'pk': pk}))
else:
return HttpResponseRedirect(reverse('another_detail', kwargs={'pk': pk}))
,在您的网址中,您必须“命名”视图
path('another_detail/<int:pk>/', views.another_detail, name='another_detail'),