0

私は 3 番目の部分のアプリ (django-registration) を使用しており、自分の都合で検証ルールを変更する必要があります。

1 つの方法は、フォーム (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,
                                ...
                                )
    ...

しかし、この拡張された形式を自分のコードに入れるかどうかは常に問題です。

もう 1 つのアイデアは、登録アプリを自分のプロジェクト フォルダーに埋め込み、それを直接変更することです。簡単にできますが、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 に答える