1

伸ばしたRegistrationFormUniqueEmail

class CustomRegistrationFormUniqueEmail(RegistrationFormUniqueEmail):
    first_name = forms.CharField(label=_('First name'), max_length=30,required=True)
    last_name = forms.CharField(label=_('Last name'), max_length=30, required=True)
    def save(self, profile_callback=None):
        new_user = super(CustomRegistrationFormUniqueEmail, self).save(profile_callback=profile_callback)
        new_user.first_name = self.cleaned_data['first_name']
        new_user.last_name = self.cleaned_data['last_name']
        return new_user

その後、ビューを変更しました

#       form = form_class(data=request.POST, files=request.FILES)
        form = CustomRegistrationFormUniqueEmail(data=request.POST, files=request.FILES)

しかし、それでも4つのフィールドのみを含むデフォルトのフォームが表示されます。

4

3 に答える 3

3

最近、そのようなフォームを実装しました。これが私たちが行ったことです:

  • 新しいものを作成しますbackend(最初はデフォルトのバックエンドからコピーするだけです)

    registration/
        backends/
            default/
            custom/ # <- your new backend
    

    ..。

  • 新しいurls.pyでは、バックエンド引数を調整します

    ...
    { 'backend': 'registration.backends.custom.DefaultBackend' },
    ...
    
  • forms.py下を作成しますcustom。このフォームを好みに合わせて調整します(フィールドと検証)

  • 適切なバックエンドのregistration/urls.pyポイント:

     # from registration.backends.default.urls import *
     from registration.backends.custom.urls import *
    

それはうまくいくはずです。特にこれは次の理由で機能します。

  • 次のメソッドcustom/__init__.pyを持つDefaultBackendクラスがありget_form_classます。

    def get_form_class(self, request):
        """
        Return the default form class used for user registration.
        """
        return RegistrationForm
    
  • RegistrationFormそして、あなたもそのファイルにあなた自身をインポートします:

    from registration.backends.custom.forms import RegistrationForm
    
于 2010-05-29T15:13:48.000 に答える
0

なぜそれが機能しないのかはわかりませが、django-registrationを編集する必要はないと確信しています...で引数としてviews.pynewを渡すことができます。CustomRegistrationFormUniqueEmailurls.py

于 2010-05-29T13:24:18.653 に答える
0

シグナルを使用したdjango-registrationの拡張とhttp://dmitko.ru/?p=546をご覧ください。

于 2010-06-26T19:23:18.783 に答える