0

我正在使用第 3 部分应用程序(django-registration),并且需要为自己修改验证规则。

一种方法是扩展表单(RegistrationForm),并用我自己的验证规则覆盖字段。

#registration/forms.py
class RegistrationForm(forms.Form):
    username = forms.RegexField(regex=r'^[\w.@+-]+$',
                                max_length=30,
                                ...
                                )
    ...

在我自己的应用程序中:

class RegistrationForm(RegistrationForm):
    username = forms.RegexField(regex=r'(?ui)^[\w.@+-]+$',
                                min_length=3,
                                max_length=20,
                                ...
                                )
    ...

但是我应该把这个扩展形式放在我自己的代码中总是一个问题。

另一个想法是把注册app嵌入到我自己的项目文件夹中,直接修改。这样做更容易,但感觉像是关于 OOP 的问题。

想知道最好的方法是什么?

4

1 回答 1

0

特别是 django-registration 提供了相当多的可扩展性。 视图允许一个参数registerform_class

您可以覆盖register视图的默认 url 并设置form_class为您想要的任何表单类,以您需要的方式进行验证(我建议RegistrationForm像您在示例代码中那样进行子类化)。

像这样的东西(在你的主要 urls.py 中):

url(r'^accounts/register/$', 'registration.views.register', {
     'backend': 'registration.backends.default.DefaultBackend',
     'form_class': MyRegistrationForm}, name='registration_register'),
(r'^accounts/', include('registration.backends.default.urls')),
于 2012-10-03T00:26:53.537 回答