我正在使用 Django-Registration 包让用户创建帐户、对其进行身份验证并登录到我的 webapp。
但是,用于创建帐户的表单/视图不会要求用户输入名字/姓氏(这些字段是模型 BTW 的一部分)。它只询问他们的电子邮件地址、登录 ID 和密码(两次)。我希望它询问用户的名字/姓氏(这些字段可以是可选的......但它仍然应该询问)。我找不到要修改的表单和查看文件,因此它要求提供此信息。我已经修改了模板文件。但是没有表单和视图的修改是没有用的。这是怎么做到的?
我正在使用 Django-Registration 包让用户创建帐户、对其进行身份验证并登录到我的 webapp。
但是,用于创建帐户的表单/视图不会要求用户输入名字/姓氏(这些字段是模型 BTW 的一部分)。它只询问他们的电子邮件地址、登录 ID 和密码(两次)。我希望它询问用户的名字/姓氏(这些字段可以是可选的......但它仍然应该询问)。我找不到要修改的表单和查看文件,因此它要求提供此信息。我已经修改了模板文件。但是没有表单和视图的修改是没有用的。这是怎么做到的?
在您的 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)
一旦你完成了这里所示的所有设置,请使用以下 CustomUserForm:
class CustomUserForm(RegistrationForm):
class Meta(RegistrationForm.Meta):
model = CustomUser
fields = ['first_name','last_name','username','email','password1','password2']