Django. Почему форма не проходит валидацию?
Проблема в том, что форма не хочет ни при каких условиях проходить валидацию. Т.е. я ее заполняю, а данные не добавляются. Что я делаю не так? Минимально воспроизводимый пример ниже.
urls.py
from django.urls import path
from . import views
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('template/upload', views.template_upload_view, name='template_upload'),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
views.py
from .forms import TemplateUploadForm
def template_upload_view(request):
if request.method == 'POST':
form = TemplateUploadForm(request.POST, request.FILES)
if form.is_valid():
print("Форма валидна. Добавляю данные в БД!")
else:
form = TemplateUploadForm
return render(request, 'template_upload.html', {'form': form})
forms.py
from .models import Template
class TemplateUploadForm(forms.ModelForm):
class Meta:
model = Template
fields = ('name', 'description', 'file',)
template_upload.html
<form method="post" id="chatbotAddForm" name="chatbotAddForm" action="/template/upload">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" id="submitButton">Add</button>
</form>
models.py
from django.db import models
class Template(models.Model):
name = models.CharField(max_length=255, blank=True)
description = models.TextField()
file = models.FileField(upload_to='documents/')
uploaded_datetime = models.DateTimeField(auto_now_add=True)
UPD: Вот код самой формы, сгенерированой Django
<form method="post" id="chatbotAddForm" name="chatbotAddForm" action="/template/upload">
<input type="hidden" name="csrfmiddlewaretoken" value="8sBCEXOuYnbcjqniJybaxBo5nAwW2hywh8Wrb9Izsz4FhjpNXhkMX2VwHcbOkBOi">
<p>
<label for="id_name">Name:</label>
<input type="text" name="name" maxlength="255" id="id_name">
</p>
<p>
<label for="id_description">Description:</label>
<textarea name="description" cols="40" rows="10" required id="id_description">
</textarea>
</p>
<p>
<label for="id_file">File:</label>
<input type="file" name="file" required id="id_file">
</p>
<button type="submit" id="submitButton">Add</button> <a href="/chatbots"><input type="button" value="Cancel"></a>
</form>