Очень плохой Django, когда дело доходит до рендеринга изображения в моем шаблоне
Правильно, давайте попробуем еще раз.
Мои изображения Django не отображаются в моем шаблоне. Несмотря на правильную настройку.
Вот моя установка - полностью воспроизводимая установка - выглядит следующим образом:
# settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
#urls.py
from django.urls import path, include
from . import views
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.views.static import serve
urlpatterns = [
path('<uuid:uuid>', views.details),
]
# Only for development. Do not use this in production.
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
#views.py
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse
from django.template import loader
from .models import MediaModule
def details(request, uuid):
articles = MediaModule.objects.all().values()
article = get_object_or_404(MediaModule, uuid=uuid)
title = article.article_headline
return render(request, 'media-article.html', {'article': article, 'title':title, 'articles':articles})
#media-article.html
<img src="{{article.article_image.url}}" alt="{{article.article_image.url}}"/>
#models.py
from django.db import models
import uuid
# Create your models here.
class MediaModule(models.Model):
uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
article_image = models.ImageField(upload_to='static/assets')
Вот схема моего каталога файлов:
ProjectName-|
RootFolder-|
settings.py
media-| #app name
templates-|
media-article.html
models.py
views.py
urls.y
static-|
assets-|
image.jpg
Есть ли веская причина, почему, когда я захожу в консоль отладки в браузере, она выдает мне ошибку 404, несмотря на то, что src
указывает на правильную директорию /static/assets/118118money_u1wgRGw.jpg
Почему?!
Да, я просмотрел другие посты здесь, прежде чем написать этот.
Я буквально потратил весь день на это, и теперь я серьезно смотрю на свое терпение. Я перепробовал все, я добавлял слэш, я удалял слэш, я менял директории, я перенастраивал директора, я пробовал абсолютные URL, я пробовал относительные URL, я удалял изображения и добавлял их, я подтверждал и подтверждал и подтверждал и подтверждал settings.py, and I have confirmed then again. I have gone into the inspect source code and the URL directory is correct, I go to the director and guess what,
error404`, несмотря на то, что изображения находятся в правильной директории и что моя конфигурация правильная.
Проверка правильная, но я просто не могу заставить эти изображения отображаться.
Я в полном восторге и в ярости.
Ваш проект имеет такую структуру
Project-|
media-| #app
templates-|
apps.py
models.py
views.py
urls.y
media-article.html
static-|
assets-|
image.jpg
project-| #main app
settings.py
urls.py
asgi.py
wsgi.py
Поэтому вам нужно удалить это из media/urls.py
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
и поместите его в project/urls.py если вы включили в urlpatterns пути из медиаприложения, лучше переименовать пути к конечным точкам медиаприложения (например, /media-upload)