2

だから私はdjangoの登録を持っています.電子メールがすでに使用されている場所での登録を禁止するために、フォームの検証を拡張したいと思います-これを行う方法は何ですか?

私はこれを持っています(まあ、私は本当に知りません。私のラップトップは私のガールフレンドによってhuluでThe Voiceを見るように強要されたので、これは私の記憶と私のiPadで):

import django-registration.registrationForm

class customRegistrationForm(form.RegistrationForm):
    def clean_email(self):
        #check here like the one for username!

私はそれを行うことができますか?また、このカスタムフォームはどこに貼り付ければよいですか? 私はそれをdjango-registrationフォルダーに入れていないと思うので、私のappsフォルダーに...特定のフォルダーに入れるのは「意味」ですか?ベースのapp_nameフォルダーに貼り付けて、呼び出しがcustomRegistrationFormであるかどうかは問題ですか?

乾杯!アンドリュー

アップデート

わかりましたので、djangoで物事を「上書き」するには、クラスをinit .pyに入れる必要があり、サブフォルダーを取得したい場合は、独自のinit .pyファイルが必要であることがわかりました

「フォルダ」init .py ファイルは空にすることができます

なぜこれがPythonのものなのかわかりませんか?また、フォルダー内の別のファイルに customRegisterForm.py を含めることができるかどうか、またはinit .pyに含める必要があるかどうかも不明です

とにかく、次は、オーバーライドが想定どおりに機能していないようだということです。

Java では、クラスを拡張すると、そのクラスのすべての非プライベート メンバーにアクセスでき、親クラスで定義されたとおりに動作します。ジャンゴでは、私はたくさん得ています

「customRegistrationForm」オブジェクトには属性「get_form_class」がありません

または明示的に作成しなかったメソッドの名前...上書きで何か不足していますか?

更新された更新

から2番目の例をコピーしました

http://pbjots.blogspot.com/2012/01/customising-django-registration-no.html

これは御馳走を働いています。拡張がこれらすべてのメソッドを保持しない理由、またはコードをやみくもにコピーして何かを壊しただけなのか、まだ不明です-何かアイデアはありますか?

4

2 に答える 2

1

登録フォームを拡張して電子メールを含めるには、まず UserCreationFormを拡張して電子メール フィールドを含めます。forms.py というファイルを作成して、その特定のアプリに必要なすべてのフォームを含めることができますが、私の経験から、init.pyを使用する必要はあまりありません。

登録フォームを拡張して電子メールを含める方法の例を次に示します。

from django.contrib.auth.forms import UserCreationForm
from django import forms
from django.contrib.auth.models import User

class RegisterForm(UserCreationForm):
    email = forms.EmailField(label="E-Mail")    

    class Meta:
        model = User
        fields = ("username", "email", )

    def clean_email(self):
        email = self.cleaned_data["email"]

        try:
        User.objects.get(email=email)
        except User.DoesNotExist:
        return email

        raise forms.ValidationError("A user with that email address already exists.")

この Django チュートリアルをチェックしてください。プロセスの概要がうまく説明されています。 https://docs.djangoproject.com/en/1.4/intro/tutorial01/

于 2012-05-09T02:35:04.193 に答える
1

RegistrationFormUniqueEmailフォームを見てください。その作業を行うdjango-registrationの組み込みクラス

from registration.forms import RegistrationFormUniqueEmail
于 2012-07-23T14:30:10.183 に答える