Django-registration:如何创建帐户请求姓/名

时间:2013-04-02 20:52:46

标签: django django-registration

我正在使用Django-Registration软件包让用户创建帐户,对其进行身份验证并登录我的webapp。

但是,帐户创建的表单/视图不会要求用户输入名字/姓氏(这些字段是模型BTW的一部分)。它只询问他们的电子邮件地址,登录ID和密码(两次)。我想要询问用户的名字/姓氏(这些字段可以是可选的......但它仍应该询问)。我找不到要修改的表单和视图文件,以便它要求提供此信息。我修改了模板文件。但没有形式和视图修改是没用的。这是怎么做到的?

2 个答案:

答案 0 :(得分:6)

在您的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)

答案 1 :(得分:1)

一旦完成所有设置,如图here所示,请使用以下CustomUserForm:

class CustomUserForm(RegistrationForm):
    class Meta(RegistrationForm.Meta):
        model = CustomUser
        fields = ['first_name','last_name','username','email','password1','password2']