Как получить отображение данных файла формы в случае недействительности формы в django
я определил форму в django как :
forms.py
@parsleyfy
class CreationForm(forms.Form):
sample_name=forms.CharField(label="Agent Name",max_length=40, widget=forms.TextInput(attrs={'maxlength': '40', 'placeholder':""}),error_messages={'error-message': "Enter valid Name",'required':'Please Enter Name'})
sample_description=forms.CharField(label="agent description",max_length=100,widget=forms.Textarea(attrs={'maxlength': '40', 'placeholder':""}),error_messages={'error-message': "Enter valid Description",'required':'Please Enter Description'})
logo=forms.FileField(label="Logo",error_messages={'error-message': "Please Upload Valid File",'required':'Please Upload Logo'})
def __init__(self,request,*args, **kwargs):
if request:
self.request=request
kwargs.setdefault('label_suffix', '')
super().__init__(*args, **kwargs)
Я использую представления, основанные на классах:
Views.py:
class CreationView(FormView):
template_name = 'creation.html'
form_class = CreationForm
def dispatch(self, *args, **kwargs):
try:
return super(CreationView, self).dispatch(*args, **kwargs)
except Exception as e:
print("Exception in dispatch of CreationView form",e)
def get_initial(self):
init = super(CreationView, self).get_initial()
init.update({'request':self.request})
return init
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs['request'] = self.request
return kwargs
def get_context_data(self,**kwargs):
context = super(CreationView, self).get_context_data(**kwargs)
form_class = self.get_form_class()
context['form']=self.get_form(form_class)
return context
def post(self, request, *args, **kwargs):
try:
print(self.request.POST,"POST Request")
print(self.request.FILES,"files in the request")
form_class = self.get_form_class()
form = self.get_form(form_class)
if form.is_valid():
return self.form_valid(form, **kwargs)
else:
print("inside form invalid")
return self.form_invalid(form, **kwargs)
except Exception as e:
print("Exception in creationview",e)
def form_valid(self, form):
print("inside form valid")
return render(self.request,'creation.html',{'form':form})
def form_invalid(self,form):
return self.render_to_response(self.get_context_data(form=form))
creation.html:
<form method="post">
{% csrf_token %}
{% for field in form.visible_fields %}
{{ field }}
{{ field.label_tag }}
{% for error in field.errors %}
<div class="error">
{{ error }}
</div>
{% endfor %}
{% endfor %}
<button type="submit">Submit</button>
</form>
Когда форма недействительна (например, имя недействительно, я выбрасываю ошибку "Invalid Name" с формой на тот же html снова. но загруженный файл не получает вместе с данными формы. Как я могу справиться с этим сценарием в случае недействительности формы.