Ich habe eine Ansicht, eine Vorlage und ein Formular erstellen, die verwendet wird, um eine CSV-Datei zusammen mit einigen anderen Informationen hochzuladen.So zeigen Sie die Show ValidationError in Vorlage
Ich habe Probleme den Validation Anzeige, die ich in meiner clean() Funktion der Form definiert:
Dieser Teil der Form ist:
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
Und das ist ein Teil meiner Ansicht:
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}))
Und das ist, wie ich die Form in der Vorlage machen:
<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>
Das Problem ist, dass {{ field.errors }}
meine ValidationError nicht anzeigen.
Nun, ich weiß, es macht keinen Sinn, wie es ist, aber schließlich möchte ich die Option hinzufügen, um den Formattyp der Datei zu überprüfen und nur CSV zu akzeptieren. – user1919
Wenn ich die von Ihnen angegebene Funktion (clean_csv) verwende, wie kann ich auf die Fehlermeldungen in der Vorlage zugreifen? {{field.errors}} oder gibt nichts zurück. – user1919
Wenn Sie eine 'clean_csv'-Methode definieren, dann sind die Fehler in' {{field.errors}} '(wenn' field' das csv-Feld ist). Wenn das nichts anzeigt, dann hört es sich an, als hätte das CSV-Feld keine Fehler. – Alasdair