4

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

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

4

2 回答 2

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)
于 2013-04-02T21:07:52.953 回答
2

一旦你完成了这里所示的所有设置,请使用以下 CustomUserForm:

class CustomUserForm(RegistrationForm):
    class Meta(RegistrationForm.Meta):
        model = CustomUser
        fields = ['first_name','last_name','username','email','password1','password2']
于 2020-04-19T04:24:59.327 回答