如何让django-registration使用我的自定义UserCreationForm和UserChangeForm?

时间:2012-09-10 18:07:57

标签: python django registration django-registration

我正在使用Django 1.4和django-registration

开发一个网站

我想允许用户使用任意Unicode字符创建用户名。目前,如果有人尝试使用非拉丁字符进行注册,他将看到错误消息。负责拒绝此类非ASCII用户名的代码位于UserCreationFormUserChangeForm,请参阅here

username = forms.RegexField(
        label=_("Username"), 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.")})

现在,我想改变它。我已经看到了一些建议,我应该创建自己的UserCreationForm,并且创建一个带有一些改变行为的派生类似乎很容易。

我不明白的一点是:如何让django-registration使用我自定义的UserCreationFormUserChangeForm?显然,如果可能的话,我想避免修改django-registration的来源。

1 个答案:

答案 0 :(得分:2)

请参阅http://docs.b-list.org/django-registration/0.8/views.html

创建自己的注册表后,您可以将此表单传递给django-registration的注册视图。查找registration.backends.default.urls模块

url(r'^register/$', register,
     {'backend': 'registration.backends.default.DefaultBackend', 
     'form_class': MyRegistrationForm},