首页 > 解决方案 > 当我登录/注册时,Allauth 重定向到“帐户/登录/无”

问题描述

当我创建帐户或使用现有帐户登录时,Allauth 重定向到“帐户/登录/无”或“帐户/注册/无”,但我已登录并成功创建帐户

意见:

class LoginView(RedirectAuthenticatedUserMixin,
                AjaxCapableProcessFormViewMixin,
                FormView):
    form_class = LoginForm
    template_name = "account/login.html"
    success_url = "/"
    redirect_field_name = "next"
    # ....

class SignupView(RedirectAuthenticatedUserMixin, CloseableSignupMixin,
                 AjaxCapableProcessFormViewMixin, FormView):
    template_name = "account/signup.html"
    form_class = SignupForm
    redirect_field_name = "next"
    success_url = "/"
    # ....

网址.py

urlpatterns = [
    path('account/', include('allauth.urls'), name='account'),
    # ....
]

设置.py

LOGIN_REDIRECT_URL = '/'

标签: pythondjangodjango-allauth

解决方案


<input type="hidden" name="{{ redirect_field_name }}" value="{{redirect_field_value}}">

检查您是否在自定义登录 html 中提供了此信息,如果有,请将其删除。

例如,您的页面需要登录示例 (localhost/dashboard) 因此,当您访问此 url 时,它将重定向到 (localhost/login/?next=/dashboard/) 其中 'next'({{ redirect_field_name }}) 值为 '仪表板' 。因此,在您登录后,它会转到仪表板页面。但是,如果您转到 (localhost/login/) 下一个值将是“None”,那么无论您是否在设置页面中提供了 LOGIN_REDIRECT_URL,它都会转到“localhost/login/None”,它总是会转到基于隐藏的输入值是“redirect_field_name”。

注意:如果您在每次登录后删除上述隐藏输入,则页面将重定向到 LOGIN_DIRECT_URL 中提到的 url


推荐阅读