我正在使用Django-Registration软件包让用户创建帐户,对其进行身份验证并登录我的webapp。
但是,帐户创建的表单/视图不会要求用户输入名字/姓氏(这些字段是模型BTW的一部分)。它只询问他们的电子邮件地址,登录ID和密码(两次)。我想要询问用户的名字/姓氏(这些字段可以是可选的......但它仍应该询问)。我找不到要修改的表单和视图文件,以便它要求提供此信息。我修改了模板文件。但没有形式和视图修改是没用的。这是怎么做到的?
答案 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']