python - Django Allauth 注册阻止登录

标签 python django django-allauth

是否有办法阻止 Allauth 注册表单自动登录用户?

我在这里找到了一个类似的帖子,但没有答案:

prevent user login after registration using django-allauth

最佳答案

您已登录,因为此行为已融入 allauth 的注册 View 中。当表单有效时, View 调用名为 complete_signup 的函数,该函数执行以下两件事:

  1. 发出 user_signed_up 信号
  2. 让用户登录

为了解决这个问题,我们需要离开步骤 1,并用简单的重定向替换步骤 2。

具体操作方法如下:

  1. allauth/account/views.py 扩展 SignupView 并重写其 form_valid 方法,如下所示:

    class CustomSignupView(SignupView):
        def form_valid(self, form):
            # By assigning the User to a property on the view, we allow subclasses
            # of SignupView to access the newly created User instance
            self.user = form.save(self.request)
            try:
                signals.user_signed_up.send(
                    sender=self.user.__class__,
                    request=self.request,
                    user=self.user, 
                    **{}
                )
                return HttpResponseRedirect(self.get_success_url())
            except ImmediateHttpResponse as e:
                return e.response
    

    尚未测试代码,但它应该可以工作。

  2. 将新 View 连接到 urls.py 中,以便它替换旧的注册 View url。

关于python - Django Allauth 注册阻止登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50893917/

相关文章:

python - 跨 'skills' 有效分配 'businesses' 的算法 - 稳定婚姻问题

Python 'requests' 库 - 定义特定的 DNS?

python - 在生产模式下从服务站点在 Django 中设置静态文件

python - Django 如何从过滤数据中设置或更新数据

python - 如何从模板中的 ModelAdmin 访问函数?

python - 使用 requests.post 时 <a> 标签不显示 Href 属性

django - 在 Django Rest Framework 选项请求中显示过滤器和排序

django-allauth 移动客户端 csrf 保护

django-allauth 返回错误 Reverse for 'account_confirm_email',参数为 '()',关键字参数为 '{}' 未找到

django - UNIQUE constraint failed : auth_user. username with registering with email