使用 Django 和 AllAuth 登录后不重定向到我自己的视图

Posted

技术标签:

【中文标题】使用 Django 和 AllAuth 登录后不重定向到我自己的视图【英文标题】:Not redirecting to my own view after login with Django and AllAuth 【发布时间】:2020-09-07 16:36:56 【问题描述】:

我正在熟悉 Django,我正在尝试使用 django-allauth,但我发现的问题是登录后我无法重定向到自己的视图。分享一段代码:

这是我在 login.html 模板中的表单:

<form action="% url 'webapp:home' %" method="post" class="margin-bottom-0">
            % csrf_token %
   ...
 </form>

这是在我的应用程序中定义的 url.py:

app_name = 'webapp'

urlpatterns = [
    path(route='', view=views.HomeView.as_view(), name='home'),
]

我还定义了我的命名空间:

path("workspace/", include("picnic.webapp.url", namespace="webapp")), 

现在,每次登录成功时,我都会得到与登录匹配的 URL:http://127.0.0.1:8000/accounts/login/?next=/workspace/,它再次将我重定向到登录页面......我如何强制 allauth 将我发送到 http://127.0.0.1:800/workspace 而不是 url目前正在发送给我?

问候

【问题讨论】:

【参考方案1】:

看着documentation

声明您必须设置:

login_redirect_url 在您的设置中

您的登录表单有问题,该操作指定表单发布到的 url,allauth 的默认值是这样的:

action="% url 'account_login' %"

检查您是否将来自 allauth 的网址包含在基础 urls.py 中:

url(r'^accounts/', include('allauth.urls')),

编辑:

我猜 picnic.webapp.url 应该是picnic.webapp.urls

【讨论】:

bb4l,感谢您的回答,我的朋友,但这是我尝试的第一件事,但它不起作用,因为即使我在我的 LOGIN_REDIRECT_URL="home" 中也将我重定向到 127.0.0.1:8000/accounts/confirm-email设置 您是否更改了登录视图? 您是否将ACCOUNT_AUTHENTICATED_LOGIN_REDIRECTS 设置为False 这是项目现在的状态:我猜 picnic.webapp.url 应该是 picnic.webapp.urls? -> 1)是的,我发布时有一个错字,但是是的......它在项目中是正确的。 2) ACCOUNT_EMAIL_VERIFICATION = "强制" 3) ACCOUNT_AUTHENTICATED_LOGIN_REDIRECTS = False 4) LOGIN_URL = "account_login" 5)
6) path("workspace/", include("picnic.webapp.urls", namespace="webapp")),
这是我的第一次尝试,甚至想到了这个配置,登录后,它把我重定向到127.0.0.1:8000/accounts/confirm-email,我不想确认任何事情,我想直接回家创建一个新的视图类来捕获我的确认电子邮件 url 和手册。将其重定向到家。我不想要那个。再次请,我是使用 django 的新手,我很确定我做错了什么

以上是关于使用 Django 和 AllAuth 登录后不重定向到我自己的视图的主要内容,如果未能解决你的问题,请参考以下文章

自定义 django-allauth 登录视图

Django Allauth 自定义登录模板不起作用

使用 django-allauth 启用 oauth 登录,但使用自定义提供程序

Django从零搭建个人博客 | 使用allauth插件管理用户登录与注册

使用 react-google-login 和 django-allauth 刷新令牌

使用来自 django-allauth 的访问令牌登录 Spotify iOS SDK