1

我想阻止/重定向登录用户查看登录或注册页面,我通过这样的视图做到了

def login(request):
    if request.user.is_authenticated():
        #redirect
    else:
        #view form`

但现在我切换到通用视图

class LoginView(generic.edit.FormView):
    form_class = LoginForm
    template_name = "people/user_login_form.html"
    success_url = '/'

并且无法使用变量“请求”,经过一番搜索后,我找到了使用 custom_login 函数的建议,但我不知道如何完成它

def custom_login(request, **kwargs):
    if request.user.is_authenticated():
        return redirect('/')
    else:
        #what should i implement here to render LoginView.as_view() ?

有没有更好的办法 ?权限也许?

4

1 回答 1

4

我会覆盖dispatch方法:

class LoginView(generic.edit.FormView):
    def dispatch(self, request, *args, **kwargs):
        if request.user.is_authenticated():
            return HttpRedirect('/whatever/')
        else:
            return super(LoginView, self).dispatch(request, *args, **kwargs)
于 2013-06-07T11:49:11.430 回答