我会将用户重定向到" admin"页面,如果他是超级用户,否则正常"个人资料"但它没有工作
urls.py
url(r'^user/login/', LoginUserView.as_view(), name='login'),
url(r'^user/profile/', UpdateUserView.as_view(), name='profile'),
url(r'^user/admin/$', UpdateAdminView.as_view(), name='admin'),
views.py
class LoginUserView(auth_views.LoginView):
template_name = "Login/login.html"
#TODO
def dispatch(self, request, *args, **kwargs):
if self.request.user.is_superuser:
self.redirect_field_name = reverse_lazy("admin")
else:
self.redirect_field_name = reverse_lazy("profile")
return super(LoginUserView, self).dispatch(request, *args, **kwargs)
答案 0 :(得分:1)
设置redirect_field_name
不起作用 - 它是参数的名称,默认为'next'
,而不是重定向到的网址。
如果您想要成功网址,则应覆盖get_success_url
。
class LoginUserView(auth_views.LoginView):
template_name = "Login/login.html"
def get_success_url(self):
url = self.get_redirect_url()
if url:
return url
elif self.request.user.is_superuser:
return reverse("admin")
else:
return reverse("profile")
方法开头的get_redirect_url()
调用意味着尝试使用重定向字段的默认行为仍然有效。
答案 1 :(得分:0)
中缺少“e
”:
self.redirect_field_name = reverse_lazy(“profile”)