Невозможно отправить изображение через формы (django)
Я пытаюсь отправить форму и зарегистрировать ее в базе данных, но поле imagefield не работает. Каждый раз, когда я пытаюсь загрузить изображение и нажимаю сохранить, форма просто обновляется и сообщает мне, что "Это поле обязательно для заполнения".
Вот мой код:
models.py:
from django.db import models
class Photos(models.Model):
title = models.CharField(max_length=50)
description = models.TextField(blank=True, null=True)
photo = models.ImageField(upload_to='images/')
forms.py:
from django import forms
from .models import Photos
class PhotosForm(forms.ModelForm):
class Meta:
model = Photos
fields = [
'title',
'description',
'photo'
]
views.py:
from django.shortcuts import render
from .models import Photos
from .forms import PhotosForm
def photo_create_view(request):
form = PhotosForm(request.POST, request.FILES or None)
if form.is_valid():
form.save()
context = {
'form': form,
}
return render(request, "photos/photo_create.html", context)
setting.py:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
template:
{% extends 'home.html'%}
{% block content %}
<form method="POST"> {% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Save" />
</form>
{% endblock %}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>website</title>
</head>
<body bgcolor="pink">
{% block content %}
{% endblock %}
</body>
</html>
также моя фотография на файловом дереве: https://i.stack.imgur.com/dmyDM.png
Вы должны включить enctype
в свою форму.
<form method="POST" enctype="multipart/form-data"> {% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Save" />
</form>