使用 django-allauth 进行多重注册、注册表单

2023-11-22

我正在开发的应用程序需要两种不同类型的用户单独登录。我们需要“客户”和“企业”所有者能够注册。

对于“企业”所有者,我需要做的就是设置布尔值user.is_business to True

我用过ACCOUNT_SIGNUP_FORM_CLASS有一个单独的类将布尔值设置为 true,这就像一个魅力。 但随后客户端登录就无法使用了。

有没有办法为不同的用户创建单独的注册视图?

我尝试过以下方法

class BusinessUserRegistrationView(FormView):
    form_class = BusinessSignupForm
    template_name = 'allauth/account/signup.html'
    view_name = 'organisersignup'
    success_url = reverse_lazy(view_name)
organisersignup = BusinessUserRegistrationView.as_view()

和形式

class BusinessSignupForm(BaseSignupForm):
    password1 = SetPasswordField(label=_("Password"))
    password2 = PasswordField(label=_("Password (again)"))
    confirmation_key = forms.CharField(max_length=40,
                                       required=False,
                                       widget=forms.HiddenInput())

    def __init__(self, *args, **kwargs):

        super(BusinessSignupForm, self).__init__(*args, **kwargs)
        if not app_settings.SIGNUP_PASSWORD_VERIFICATION:
            del self.fields["password2"]

    def clean(self):
        super(BusinessSignupForm, self).clean()
        if app_settings.SIGNUP_PASSWORD_VERIFICATION \
                and "password1" in self.cleaned_data \
                and "password2" in self.cleaned_data:
            if self.cleaned_data["password1"] \
                    != self.cleaned_data["password2"]:
                raise forms.ValidationError(_("You must type the same password"
                                              " each time."))
        return self.cleaned_data

    def save(self, request):
        adapter = get_adapter()
        user = adapter.new_user(request)
        user.is_business = True
        adapter.save_user(request, user, self)
        self.custom_signup(request, user)
        setup_user_email(request, user, [])
        return user

并在 urls.py 中

url(r'^organiser/$', 'authentication.views.organisersignup', name='organisersignup'),

问题是,不知何故,布尔值 is_business 从未设置为 True。 事实证明,我可以拯救,但拯救的永远不是企业,而是客户。 BusinessSignupForm 是 allauth 表单中 SignUpForm 的副本。

我究竟做错了什么?


我会回答这个问题,因为我找到了使用 allauth 提供多个注册表单的解决方案。

Form:

class BusinessSignupForm(SignupForm):
    def save(self, request):
        user = super(BusinessSignupForm, self).save(request)
        user.is_organizer = True
        user.save()
        return user

View

class BusinessUserRegistrationView(SignupView):
    template_name = 'allauth/account/signup-organizer.html'
    form_class = BusinessSignupForm
    redirect_field_name = 'next'
    view_name = 'organisersignup'
    success_url = None

    def get_context_data(self, **kwargs):
        ret = super(BusinessUserRegistrationView, self).get_context_data(**kwargs)
        ret.update(self.kwargs)
        return ret

organisersignup = BusinessUserRegistrationView.as_view()

Template

 <form id="signup_form" method="post" action="{% url 'organisersignup' %}">
      {% csrf_token %}
      {% bootstrap_form form %}
 </form>

如果您有自定义用户模型,可以反复重用它来修改自定义用户模型的属性。

当前运行 Django==1.8.10 和 django-allauth==0.24.1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 django-allauth 进行多重注册、注册表单 的相关文章

  • 如何判断 Django 忽略 Accept-Language 标头的原因?

    我有一个 Django 应用程序 在 Google App Engine 上 我希望将其国际化 设置 py USE I18N True LANGUAGE CODE en Restrict supported languages and JS
  • 如何使用类似 KDnuggets 风格的 PDF 绘制比较箱线图

    在经历了解 KDnuggets 文章中的箱线图 https www kdnuggets com 2019 11 understanding boxplots html 我找到了带有概率密度函数的箱线图的详细图 pdf 我正在尝试绘制比较箱线
  • 整数 numpy 数组乘以浮点数

    我有一个包含整数值的 numpy 数组 如果我将整个矩阵乘以一个浮点数 结果是一个浮点矩阵 但如果我通过 for 循环逐列相乘 它只给出整数部分 import numpy as np A np array 1 2 3 4 5 6 7 8 9
  • scrapy中cookies的正确使用形式是什么

    我是个新手 我正在一个使用cookies的网络中使用scrapy 这对我来说是一个问题 因为我可以在没有cookies的网络上获取数据 但在有cookies的网络上获取数据对我来说很困难 我有这个代码结构 class mySpider Ba
  • Celery未注册任务KeyError

    我通过在终端中执行以下命令来启动工作程序 celery A cel test worker loglevel INFO concurrency 10 n worker1 h 然后我收到一条长循环错误消息 指出 celery 已收到未注册的任
  • 输入到列表并找到同一输入python的最长条纹

    我正在编写一个程序 其中用户将值输入到列表中 直到想要结束为止 该程序将告诉用户他们输入的最长连续数字 例如 如果用户输入 7 7 7 6 6 4 end 则会得到输出 您的最长连胜次数为 3 因为 7 已连续输入 3 次 到目前为止 我有
  • 调用 close() 后大文件没有立即刷新到磁盘?

    我正在使用 python 脚本创建大文件 超过1GB 实际上有 8 个 在创建它们之后 我必须创建将使用这些文件的进程 该脚本如下所示 This is more complex function but it basically does
  • 没有实例的 Django Formset

    In this http docs djangoproject com en dev topics forms modelforms inline formsetsDjango Doc 解释了如何创建一个表单集 该表单集允许您编辑属于特定作
  • 无法为从图中加载的张量变量赋值

    我已经训练了一个模型并保存了它 现在 我试图了解权重扰动如何影响其准确性 因此我需要修改权重变量中保存的值 本质上会为其添加一些噪声 问题是加载它们后我无法为它们分配值 我正在使用 TensorFlow 版本 1 2 1 来训练和加载模型
  • 为什么 argparse 给我一个列表中的列表?

    我刚刚注意到 argparse 中的一个行为让我困惑 我猜我以前从未将它用于愚蠢的文件列表 import argparse parser argparse ArgumentParser parser add argument multi a
  • 如何计算 pandas 系列中到前一个零的距离?

    我有以下 pandas 系列 以列表形式表示 7 2 0 3 4 2 5 0 3 4 我想定义一个新的系列 返回到最后一个零的距离 这意味着我想要以下输出 1 2 0 1 2 3 4 0 1 2 如何以最有效的方式在 pandas 中做到这
  • 如何使用python在ID3v2 mp3文件上添加SYLT(同步歌词)标签?

    我想使用 python 在我的 mp3 文件上添加来自 vtt 的同步歌词 我尝试使用诱变模块 但它没有按预期工作 from mutagen id3 import ID3 USLT SLT import sys import webvtt
  • 为什么 python 的 __init__ 函数没有 return 语句,即使它是一个函数

    这可能是一个愚蠢的问题 但我很想知道答案 根据官方文件 init 不需要return语句 有什么特殊原因会这样吗 gt gt gt class Complex def init self realpart imagpart self r r
  • 带有 pygame 的 Pyinstaller

    我曾多次尝试使用 PyInstaller 来捆绑我的 Python2 程序 但它似乎从未与 Pygame 模块一起使用 我已经看到了有关此主题的许多其他问题 但我找不到任何有用的答案 有人知道这个问题的解决方案吗 我正在尝试在 Ubuntu
  • 如何在 django 模板中将整数形式的 unix 时间戳转换为人类可读的格式?

    我将日期作为整数字段存储在数据库中 并将其称为时间戳 当我在模板中显示它时 我尝试使用 timestamp date D d M Y 但是 这不会为我输出任何内容 我做错了什么吗 编辑 抱歉 拼写错误 我确实在代码中放置了 date 而不是
  • 使用 Python for Linux 模拟按键事件

    我正在编写一个脚本来自动运行特定模型 当模型失败时 它会等待用户输入 Enter 键 我可以检测到模型何时失败 但我无法使用 python 在 Linux 上 来模拟按键事件 Windows 有 SendKeys 库来执行此操作 但我想知道
  • Python:装饰器可以确定函数是否在类中定义吗?

    我正在编写一个装饰器 出于各种烦人的原因 0 检查它所包装的函数是独立定义还是作为类的一部分定义 以及新类是哪些类的子类 是很方便的 例如 def my decorator f defined in class print r s f de
  • Flask 从线程中删除会话变量

    我尝试实施投票系统 它的工作原理是这样的 如果用户对帖子进行投票 我会在会话变量中记录其临时状态 已投票 已加星标等 如果当前用户在我将结果保存到临时表之前尚未投票 用户可以在 5 分钟内更改投票 5 分钟后 结果将使用线程永久写入数据库
  • 单元测试期间的 Python 日志捕获

    我正在尝试捕获在 python 单元测试过程中创建的日志 并在此处看到了代码 https stackoverflow com a 1049375 576333 https stackoverflow com a 1049375 576333
  • Django 类视图未返回 HttpResponse 对象。它返回 None 相反

    urls py from housepost views import ListingPost url r house post ListingPost as view name post house views py from djang

随机推荐

  • MIPS 上的零美元真的是硬件零吗?

    我对 x86 64 汇编很坚定 可能不是专家 但一个平台的汇编器与下一个平台的汇编器的许多方面都是相似的 所以我也试图回答实际上不在我知识范围内的问题 我偶然发现了几个有关 MIPS 汇编的问题 这唤醒了我对细节的兴趣 因此我查阅了一些在线
  • 需要“List”类型的值,但得到“_JsonMap”类型之一

    当我尝试 json 解码时 出现错误 Expected a value of type List but getting one of type JsonMap My code static Future
  • 获取查询字符串值并将其显示在我的html页面中

    重定向到 home html 页面后 我可以看到我在上一页中给出的查询字符串值 Home html FirstName dd LastName ee smtButton Submit 我得到的结果是 firstname undefined
  • 使用 swift、iOS 恢复应用内购买

    我正在应用程序购买中实施恢复 我有一个按钮 其操作是 IBAction func restorePurchases send AnyObject SKPaymentQueue defaultQueue restoreCompletedTra
  • 使用 CodeIgniter 重定向

    谁能告诉我为什么我的重定向助手不能按我期望的方式工作 我正在尝试重定向到主控制器的索引方法 但这需要我www example com index provider1 当它应该路由到www example com provider1 这对任何
  • HTML5 日期验证

    我正在寻找对移动网站实施验证 其中我有两个输入字段 我希望第一个验证值不晚于今天的日期 第二个验证值不晚于提前一年的第一个值 E g 第一个值 26 11 2013 第二个值不能包含晚于 26 11 2014 的值 这可能吗 I like
  • HTML 拖动事件在 Firefox 中不会触发

    我有一个表格 需要在其上实现可拖动的标题列 我使用 Chrome 作为浏览器来实现它 一切正常 当我在 Firefox 17 0 1 中测试它时 我注意到drag事件不会触发 dragstart不过确实如此 我在下面的标记中简化了问题 在
  • 如何使用 Quartz 2D 向 UIImage 或 UIImageView 添加阴影?

    如何使用 Quartz 2D 向图像添加阴影UIImage or UIImageView 有代码示例吗 imageView layer shadowColor UIColor blackColor CGColor imageView lay
  • 如何使用 Java 找出默认文件打开程序?

    我需要找出 Windows 上给定文件的默认文件打开器 以便我可以自定义命令参数并使用默认打开器 查看器打开文件 我的真实使用场景是使用用户的默认媒体播放器打开多个多媒体文件 以便所有文件都将添加到用户的播放列表中 对于可以在同一实例上打开
  • 在 CQRS 中,创建实体时如何构建响应?

    如果使用 CQRS 并创建一个实体 并且其某些属性的值是其构造函数的一部分生成的 例如默认值 active的值status属性 或当前日期时间createdAt 如果您的命令处理程序无法返回值 如何将其包含在响应中 您需要在创建实体之前创建
  • 可以更改目录并在脚本完成后保留更改吗?

    在试图回答的过程中向其他用户提问 我发现了一些引起我好奇的事情 import os os chdir 就Python而言 将更改工作目录 所以如果我在 home username 然后我跑os chdir 任何后续代码都会像我一样工作 ho
  • GIT 的名字不明确?

    我正在尝试查看我的本地分支机构之一 名为 TEAM20 lab2 release 当我尝试执行此操作时 出现不明确的引用名称错误 git branch TEAM20 lab2 release warning refname TEAM20 l
  • pythontensorflow导入dll加载失败

    我安装了最新的 python 3 6 4 x64 版本 然后使用 pip3 安装仅用于 cpu 的tensorflow C gt pip3 install tensorflow 但是当我尝试在 python 中导入tensorflow时 它
  • 如果 main 方法完成执行,任何长时间运行的线程会发生什么?

    since main 在线程上运行 并且一旦main 完成后 主线程应该停止 因此 如果main 调用了一个长时间运行的线程 即使在main 已完成所有任务 自从main 返回后 其他线程会被终止吗 我觉得不是 但为什么 public st
  • 为什么 git 标签没有出现在任何分支上?

    我克隆了蚊子仓库有标签的v1 4 9 但是 标记的提交似乎不在分支上 怎么会发生这种事 作者实际上是否在自己的存储库上保留了一个分支 但只将标签从该分支推送到 GitHub 或者他只是对标签做出了承诺 我将标签制作为本地分支 git che
  • 设置以年为单位的时间跨度格式

    我有一个具有 2 个日期属性的类 FirstDay and LastDay LastDay可以为空 我想生成一个格式为的字符串 x year s y day s 如果总年份小于 1 我想省略年份部分 如果总天数小于 1 我想省略日期部分 如
  • 在 Java 上嵌入 XULRunner 应用程序

    我的目标是让 Limewire JAVA 和 Songbird XULRunner 一起运行 我认为最好的方法是在 JAVA swing 面板内运行 XUL 应用程序 songbird 还有别的办法吗 将 GUI 完全放在 XUL 中 然后
  • VBA 展望。尝试从电子邮件正文中提取特定数据并导出到 Excel

    我在这里找到了很多指南 这些指南使我达到了目前的水平 但我需要一些帮助来完成我的代码 我在这方面完全是新手 所以请耐心等待 我正在尝试在 Outlook 中使用 VBA 将 Outlook 某个文件夹中的电子邮件中的数据导出到 Excel
  • “无法解析的日期:1302828677828”尝试使用 Gson 反序列化从服务器收到的毫秒格式日期

    经过 4 个小时不停地尝试解决问题后 我决定在这里询问是否有人可以帮助我 问题是我的 Android 客户端在尝试反序列化从服务器接收的数据时抛出 无法解析 1302828677828 异常 我想知道是否可以使用 Gson 反序列化毫秒格式
  • 使用 django-allauth 进行多重注册、注册表单

    我正在开发的应用程序需要两种不同类型的用户单独登录 我们需要 客户 和 企业 所有者能够注册 对于 企业 所有者 我需要做的就是设置布尔值user is business to True 我用过ACCOUNT SIGNUP FORM CLA