0
私はビュー、テンプレート、およびフォームをビルドしました。これはCSVファイルを他の情報と一緒にアップロードするために使用されます。テンプレートでショーを表示する方法
は、私は、フォームの私のクリーン()関数で定義されてValidationErrorを、表示で問題がある:
これは、フォームの一部です:
class UploadCSVForm(forms.Form):
title = forms.CharField(max_length=255, help_text='Title', required=True)
LAYER_TYPE = (
('1', 'Globa;'),
)
layer_type = forms.ChoiceField(choices=LAYER_TYPE, help_text='Type of layer', required=True)
csv = forms.FileField(required=True)
def clean(self):
cleaned_data = super(UploadCSVForm, self).clean()
csv_file = self.cleaned_data.get('csv')
if not csv_file:
raise forms.ValidationError(_("CSV must be a file."))
return cleaned_data
そして、これが私の見解の一部です:
def layer_create(request, template='layers/layer_create.html'):
....
elif request.method == 'POST':
form = UploadCSVForm(request.POST, request.FILES)
out = {}
if form.is_valid():
try:
title = form.cleaned_data["title"]
except:
...
return render_to_response(template, RequestContext(request, {'form': form}))
そして、これは私がテンプレートでフォームをレンダリングする方法である:
<form id="file-uploader" method="post" enctype="multipart/form-data" action="{% url "layer_create" %}">
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
{% for field in form.visible_fields %}
{{ field.help_text }} <br/>
{{ field }} <br/>
{{ field.errors }}<br/>
{% endfor %}
<button type="submit" id="upload-button" class="btn btn-danger">Upload</button>
</form>
問題は{{ field.errors }}
が私のValidationErrorを表示しないということです。
まあ私はそれが意味をなさないが、最後に私はファイルの形式の種類をチェックし、CSVのみを受け入れるオプションを追加したいと思います。 – user1919
提供した機能(clean_csv)を使用すると、テンプレートのエラーメッセージにどうやってアクセスできますか? {{field.errors}}、または何も返しません。 – user1919
'clean_csv'メソッドを定義すると、' {{field.errors}} '(' field'がcsvフィールドのとき)にエラーが発生します。それでも何も表示されない場合は、csvフィールドにエラーがないように見えます。 – Alasdair