我想阻止 logged-in
用户访问登录和注册表单
我已经构建了自定义mixin,但它不起作用。问题是,即使用户已登录,他也可以访问登录和注册表单,而不是重定向到主页。
我的Mixin
class MustBeAnonymousMixin(object):
''' Only anonymous users (not logged in) may access login and register
'''
def dispath(self, *args, **kwargs):
if not self.request.user.is_anonymous:
return redirect(reverse('homepage'))
return super(MustBeAnonymousMixin, self).dispatch(*args, **kwargs)
LoginFormView
class LoginFormView(MustBeAnonymousMixin, TemplateView):
'''
Display basic user login form
'''
template_name = 'members/login.html'
def get_context_data(self, **kwargs):
context = super(LoginFormView, self).get_context_data(**kwargs)
context['login_form'] = UserLoginForm()
return context
我正在使用Django 1.8。我做错了什么?
答案 0 :(得分:2)
修正错误dispath
并使用is_authenticated()
代替is_anonymous
(已在上一个答案中指出)
答案 1 :(得分:1)
is_anonymous应该是一个函数调用,你可能不应该使用它:
is_anonymous()
始终返回False。这是一种区分用户和 AnonymousUser对象。通常,您应该更喜欢将is_authenticated()用于此方法。
答案 2 :(得分:0)
对于混合不起作用的另一种情况:
记住:“ Mixin参数”必须位于“ GenericView参数”之前
正确:
Item
错误:
MenuY