Папка Media не работает должным образом и изображения не сохраняются - Django
Я пытаюсь добавить изображения в сообщение. (Использую Django v3.2.5)
root_directory/settings.py:
BASE_DIR = Path(__file__).resolve().parent.parent
...
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
root_directory/urls.py:
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('index.urls')),
path('app2/', include('app2.urls')),
path('app3/', include('app3.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
app3/models.py:
from django.db import models
from ckeditor.fields import RichTextField
class Post_Picture(models.Model):
title = models.CharField('Title', max_length=120)
image = models.ImageField(blank=True, null=True, upload_to="images/")
caption = RichTextField(blank=True, null=True)
def __str__(self):
return self.title
app3/forms.py:
from django import forms
from django.forms import ModelForm
from .models import Post_Picture
class PostPicForm(ModelForm):
class Meta:
model = Post_Picture
fields = ('title', 'image', 'caption')
labels = {
'Title': '',
'Caption': '',
}
widgets = {
'title': forms.TextInput(attrs={'class':'form-control', 'placeholder': 'Title your post'}),
'caption': forms.Textarea(attrs={'class':'form-control', 'placeholder': 'Anything extra you want to add?'}),
}
app3/views.py:
from django.shortcuts import render, redirect
from .models import Post_Picture
from .forms import PostPicForm
from django.http import HttpResponseRedirect
from django.contrib import messages
def your_home(request):
friend_posts = Post_Picture.objects.all()
return render(request, "app3/your_home.html", {
'friend_posts': friend_posts,
})
def post_pic(request):
submitted = False
if request.method == "POST":
form = PostPicForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('post_pic?submitted=True')
else:
form = PostPicForm()
if 'submitted' in request.GET:
submitted = True
return render(request, 'app3/post_pic.html', {'form': form, 'submitted': submitted})
app3/urls.py:
from django.urls import path
from . import views
urlpatterns = [
path('your_home', views.your_home, name='your-home'),
path('post_pic', views.post_pic, name='post_pic'),
]
pip installed stuff:
$ pip freeze
asgiref==3.5.2
Django==3.2.5
django-ckeditor==5.9.0
django-js-asset==2.0.0
Pillow==9.3.0
pytz==2022.6
six==1.16.0
sqlparse==0.4.3
Я создал папку media, но это не сработало - не создалась директория "image/". Во время процесса отправки изображений он не выдал никакой ошибки. Я знал, что изображение не отобразится на сайте, но с таким кодом, я уверен, оно должно было отобразиться в области администратора, но этого не произошло.
Любая помощь будет принята с благодарностью.
Не создавайте папку media
в корне проекта, потому что django создаст ее автоматически.