在Django 1.2中将UserCreationForm的电子邮件地址自定义为用户名

Django 1.2为用户名添加了新的允许符号,这意味着用户名可以只是电子邮件地址.到目前为止,我一直在使用内置的UserCreationForm进行注册 – 如何更改它以将’username’字段标记为’email’字段?以及如何添加额外的(但仍然是User对象)字段,如名字和姓氏? (以及如何使它们成为可选项?)

我应该在这个程度上改变UserCreationForm还是我从头开始更好(如果是后者,怎么样?)

谢谢.

最佳答案 要更改电子邮件字段的标签,可以按如下方式对UserCreationForm进行子类化

from django import forms
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.forms import UserCreationForm

class MyUserCreationForm(UserCreationForm):
    username = forms.RegexField(label=_("Email"), max_length=30, regex=r'^[\w.@+-]+$',
        help_text = _("Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."),
        error_messages = {'invalid': _("This value may contain only letters, numbers and @/./+/-/_ characters.")})

添加first_name和last_name字段并不是那么容易,因为表单的save方法只接受用户名,电子邮件和密码.两种可能性是:

>覆盖表单的保存方法
>创建用户后显示UserChangeForm(这是Django管理应用程序所做的)

点赞