0

サイトの登録フォームを作成しています。

オブジェクトの標準フィールド エントリのみを使用username, email, passwordUserます。

データベース テーブルは既に作成されています。

モデル.py

class RegistrationForm(ModelForm):
    class Meta:
        model = User

ビュー.py

def Registration(request):
    RegForm = RegistrationForm(request.POST or None)
    if request.method == 'POST':
        if RegForm.is_valid():
            newUser = User.objects.create_user(username, email, password)

            RegForm.save()
            try:
                return HttpResponseRedirect('/Newuser/?userNm=' + clearUserName)
            except:
                raise ValidationError(('Invalid request'), code='300')    ## [ TODO ]: add a custom error page here.

私の質問は、これらのフィールドをどのように表現するかです:

username, email, password

この行で(ビューから):

newUser = User.objects.create_user(username, email, password)

それはRegistrationForm()models.py の一部ですか?

Userさらに:このデフォルトモデル( )modelformをforms.pyで適切に表現するにはどうすればよいですか?

4

2 に答える 2

1

2 番目の質問に答えるには:

UserCreationFormクラスの登録プロセスを表すために使用しUserます。検証と保存を処理し、いつでも拡張できます (つまり、電子メール フィールドを追加する)。

Userクラスには、ユースケースに応じて、関連するフォームが多数あります。認証、登録、パスワードの変更などです。詳細については、認証に関するドキュメントを参照してください。

https://docs.djangoproject.com/en/1.5/topics/auth/default/#module-django.contrib.auth.forms

于 2013-09-14T17:54:25.283 に答える
0

clean_date を使用して、フォームから検証済みのデータを取得できます。

username = form.cleaned_data['username']
email = form.cleaned_data['email']
password = form.cleaned_data['password']

newUser = User.objects.create_user(username, email, password)

ユーザーオブジェクトを作成した後にフォームを再度保存しているため、ユーザーオブジェクトはパスワードフィールドがパスワードのハッシュといくつかのメタデータなどであることを期待しているため、あなたのアプローチには深刻な問題があると思います.django-を使用することを強くお勧めします-登録(または少なくともそれを見てください)は、電子メールの検証に加えて、これらすべてを処理します。必要なのは、テンプレートを提供することだけです(また、このようなテンプレートを見つけることもできます)

于 2013-09-14T17:46:59.023 に答える