0
다른 정보와 함께 CSV 파일을 업로드하는 데 사용되는 뷰, 템플리트 및 양식을 빌드했습니다.템플릿에 쇼 ValidationError를 표시하는 방법
이 나는 형태의 내 청소() 함수에 정의 된 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