Django-registration:如何使帐户创建询问名字/姓氏

标签 django django-registration

我正在使用 Django-Registration 包让用户创建帐户、对其进行身份验证并登录到我的 web 应用程序。

但是,用于创建帐户的表单/ View 不会要求用户提供名字/姓氏(这些字段是模型的一部分)。它只要求他们的电子邮件地址、登录 ID 和密码(两次)。我希望它询问用户的名字/姓氏(这些字段可以是可选的......但它仍然应该询问)。我找不到要修改的表单和 View 文件,以便它要求提供此信息。我已经修改了模板文件。但如果没有表单和 View 的修改,这是没有用的。这是如何完成的?

最佳答案

在 forms.py 中,扩展 DjangoRegistration 表单,如下所示:

class MyExtendedForm(RegistrationForm):
    first_name = forms.CharField(widget=forms.TextInput(label="first_name"))
    last_name = forms.CharField(widget=forms.TextInput(label="last_name"))

urls.py 中,告诉 django-registration 使用此扩展形式:

# using my registration form to override the default
(r'^register/$', 
    register, 
    {'backend': 'registration.backends.default.DefaultBackend',
     'form_class': MyExtendedForm}),

定义user_created来保存额外信息:

def user_created(sender, user, request, **kwargs):
    """
    Called via signals when user registers. Creates different profiles and
    associations
    """
    form = MyExtendedForm(request.Post)
    # Update first and last name for user
    user.first_name=form.data['first_name']
    user.last_name=form.data['last_name']
    user.save()

然后,注册来自 django-registration 的信号,以便在处理任何注册后调用您的函数:

from registration.signals import user_registered
user_registered.connect(user_created)

关于Django-registration:如何使帐户创建询问名字/姓氏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15774127/

相关文章:

python - 棘手的模型继承 - Django

python - 如何测试 Django QuerySets 是否相等?

python - 在 ModelChoiceField Django 中使用 __unicode__ 以外的方法

django - 强制 Django 登录表单使用超过 30 个字符的用户名

python - Django 注册:如何包含自定义后端?

python - djangorest_framework自定义异常错误

django - 反向未找到 : Sending Request Context in from templates

django - 如何在 Django-Registration 表单中添加占位符

python - 使用 django-registration 定制 View

Django-Registration: 电子邮件作为用户名