1

基本クラスUserCreationFormからdjangoにメールフィールドを追加するサインアップフォームを作成しようとしています。コードは次のようになります

フォーム.py

class ussignup(UserCreationForm):

  email=forms.EmailField()

  class Meta:
    model=User
    fields=('username','email','password1','password2')

  def save(self, commit=True):
        user = super(UserCreationForm, self).save(commit=False)
        user.email=(self.cleaned_data["email"])
        if commit:
            user.save()
        return user

view.py

def signup(request):
    if request.method=='POST':
        form=ussignup(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/accounts/rgsuc')

    args={}
    args.update(csrf(request))
    args['form']=ussignup()
    return render_to_response('register.html',args)

urls.py

 url(r'^accounts/signup',signup),

エラー 出力には、電子メール フィールドが表示されます。ただし、必須フィールドの検証も電子メール フィールド データのユーザー データベース テーブルへの挿入も行われていません。こちらのビデオ チュートリアルで試してみました。

4

1 に答える 1

3

あなたの見解では、あなたはやっている

form=signup(request.POST)

代わりにそうあるべきです

form=ussignup(request.POST) 

つまり、フォーム クラス名を使用してフォームをインスタンス化します。

また、有効でない場合はフォームエラーを表示することをお勧めします。コードを次のように更新することでそれを行うことができます

def signup(request):
    if request.method=='POST':
        form=ussignup(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/accounts/rgsuc')
    else:
        form=ussignup()
    args={}
    args.update(csrf(request))
    args['form']=form
    return render_to_response('register.html',args)
于 2013-11-11T06:28:04.443 に答える