2010-12-03 35 views
0

私はファイルと電子メールアドレスを送信するためのフォームを用意しています。ここでDjango:無効なデータが入力されたときにフォームフィールドが消去されないようにします。

from django import forms 
from django.utils.translation import gettext_lazy as _ 
from django.core.validators import validate_email 

class UploadFileForm(forms.Form): 
    email = forms.EmailField() 
    file = forms.FileField() 

class EmailField(forms.CharField): 
    default_error_messages = { 
     'invalid': _(u'Enter a valid e-mail address.'), 
    } 
    default_validators = [validate_email] 

ビューです:

def upload_file(request): 

    if request.method == 'POST': 
     form = UploadFileForm(request.POST, request.FILES) 
     if form.is_valid(): 
      email = form.cleaned_data['email'] 
      handle_uploaded_file(email, request.FILES['file']) 
      return HttpResponseRedirect('/thanks') 
    else: 
     form = UploadFileForm() 
    return render_to_response('upload_file.html', {'form': form}, 
     context_instance=RequestContext(request)) 

ユーザーが無効な電子メールでフォームを送信する場合は、フォームがユーザーに戻って表示されますが、フィールドがクリアされます。このフォームフィールドのクリアを防ぐ正しい方法は何ですか?

+1

ビューを表示します。 –

+0

フィールドをクリアしないと、djangoのデフォルト動作です。あなたのビューとフォームコードを使ってダミープロジェクトを設定しました...エラーがフィールドをクリアしていないので、フォームがユーザーに表示されたので、投稿したものはすべてdjangoのストックインストール1.2。 –

+0

しかし、それは私のために上記を使用してそれらをクリアします。私はDjango 1.2.1を使用しています。私はあなたのものではなく、これを引き起こす原因は何ですか? – FunLovinCoder

答えて

2

愚かな間違い。フォームの値を含めるようにテンプレートを更新しました。すべて今働いている。

関連する問題