#django #django-views #django-forms
Вопрос:
forms.py
class ScanForm(forms.Form):
image = forms.ImageField()
xml_file = forms.FileField()
description = forms.CharField(max_length=500)
views.py
def home(request):
form = ScanForm()
if request.method == 'POST':
form = ScanForm(request.POST, request.FILES)
if form.is_valid():
image = form.cleaned_data['image']
xml_file = form.cleaned_data['xml_file']
description = form.cleaned_data['description']
return render(request,'app/home.html',{'form':form})
home.html
<form enctype="multipart/form-data" method = "POST">
{% csrf_token %}
{{ form|crispy }}
<input type="submit" value="Submit" class="btn btn-success btn-lg"/>
</form>
на терминальных значениях изображения печатается только описание, а xml_file, который я получаю, — это None или NoneType
Ответ №1:
Специально для ваших обоих image
и xml_file
поля могут быть доступны с помощью request.FILES[key_name]
. используется form.cleaned_data
только для полезной нагрузки, не связанной с файлами.
например, в вашем случае должно быть:
if form.is_valid():
image = request.FILES['image']
xml_file = request.FILES['xml_file']
description = form.cleaned_data['description']
Для получения дополнительной информации об этом вы можете напрямую обратиться к этим документам: https://docs.djangoproject.com/en/dev/topics/http/file-uploads/