Мне нужно загрузить файл на страницу Django, однако после выполнения официального урока я не смог его загрузить, он всегда выдает ошибку «Недопустимая форма», и при попытке распечатать сообщение об ошибкеформа, в которой написано «Это поле обязательно для заполнения».
Одна вещь, которая заслуживает внимания: у меня есть 2 формы на одной странице, одна это upload form
, а другая - для заполнения information
.Не уверен, что это коренная причина.
Я испробовал все решения, представленные в Интернете.
Файл шаблона:
<form id="uploadForm" action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<input type="file" value="upload" name="sourcefile">
<button type="submit">Upload</button>
</form>
Forms.py:
from django import forms
from .models import SourceFile
class UploadFileForm(forms.ModelForm):
class Meta:
model = SourceFile
fields = ('file', 'title')
Models.py:
from django.db import models
# Create your models here.
class SourceFile(models.Model):
title = models.CharField(max_length=255, blank=True)
file = models.FileField(upload_to="media/")
Views.py
def model_form_upload(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
instance = SourceFile(file_field=request.FILES['file'])
instance.save()
return JsonResponse({'error': False, 'message': 'Uploaded Successfully!'})
else:
print("Invalid form")
# return JsonResponse({'error': True, 'errors': form.errors})
else:
form = UploadFileForm()
return render(request, 'source_validation.html', {'form': form})