我有一个带有Django-allauth应用程序的Django项目.我需要在注册时从用户那里收集额外的数据.我遇到了类似的question here个,但不幸的是,没有人回答配置文件定制部分.

the documentation provided for django-allauth人:

ACCOUNT_SIGNUP_FORM_CLASS (=None)

指向自定义表单类(例如‘myapp.forms.SignupForm’)的字符串,在注册期间用于要求用户输入其他信息(例如时事通讯注册、出生日期).该类应该实现‘save’方法,接受新注册的用户作为其唯一参数.

我是新来Django 的,我正在为此而苦苦挣扎.有人能提供这样一个自定义窗体类的示例吗?我是否还需要添加一个模型类,其中包含指向User对象的链接(如this)?

推荐答案

假设您想在注册时询问用户的名字/姓氏.您需要以自己的形式放置这些字段,如下所示:

class SignupForm(forms.Form):
    first_name = forms.CharField(max_length=30, label='Voornaam')
    last_name = forms.CharField(max_length=30, label='Achternaam')

    def signup(self, request, user):
        user.first_name = self.cleaned_data['first_name']
        user.last_name = self.cleaned_data['last_name']
        user.save()

然后,在您的设置中指向此表单:

ACCOUNT_SIGNUP_FORM_CLASS = 'yourproject.yourapp.forms.SignupForm'

请注意,不能在通过ACCOUNT_FORMSSOCIALACCOUNT_FORMS的表单覆盖所在的同一文件中定义SignupForm,因为这会导致循环导入错误.

这就是全部.

Django相关问答推荐

把Django测试和testcafe结合起来?

Django Admin中显示的DateField下面的小提示是什么?

在Django的反向函数中添加动态URL

在Django管理中仅显示外键的特定值

通过从不同模型中提取值来在基于 django 类的视图中传递变量

Django:如何 Select 没有其他项目引用的项目?

更改Django的创建时间字段

按下按钮刷新在html文件中显示的变量

如何在Django管理自定义筛选器中包含自定义模型方法?

Django Facebook Connect 应用推荐

在 Django 的 ORM 中访问存储过程的最佳方法是什么

测试 Django ModelForm 是否有实例

Ruby on Rails 会影响网页的外观吗?

在 django 模板中遇到 user.is_authenticated 问题

使用 scrapy 访问 Django 模型:定义 Django 元素的路径

base.html 中的 Django 变量

Django Admin:如何在同一视图中显示来自两个不同模型的字段?

如何创建一个在复选框右侧显示复选框标签的 Django 表单?

Celery - 在一台服务器上运行不同的工作人员

从 django/python 中的 request.POST 检索列表项