我正在使用 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/