Медиа-изображение не загружается в выходные данные проекта Django

Я работаю над этим проектом django, где после загрузки изображений на носитель через панель администратора я не смог получить ни одного изображения на выходе, хотя отображается его альтернативный текст. Вот код, который может помочь вам вызвать проблему.

проект/settings.py

BASE_DIR = Path(__file__).resolve().parent.parent

MEDIA_URL = '/media/'

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

# Create the 'static' directory if it doesn't exist
os.makedirs(os.path.join(BASE_DIR, 'static'), exist_ok=True)

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

проект/urls.py

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
else:
    urlpatterns += staticfiles_urlpatterns()

модели.py posterImage = models.ImageField(upload_to='poster/', blank=True, null=True) приложение/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)

view.py

 movies = Movie.objects.all()
 return render(request, 'movie.html', {'movies': movies})

фильм.html

 {% for movie in movies %}
            <div class = "carousel-item">
                <img src = "{{ movie.image.url }}" class = "d-block w-100" alt = "{{ movie.title }}">
            
                <div class = "carousel-caption">
                    <h5>{{ movie.title }}</h5>
                </div>
            </div>
            {% endfor %}

Я надеюсь получить изображение после того, как загрузил изображение в панели администратора, используя {{movie.image.url}}

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
0
127
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

#проверьте, что «djano.contrib.staticfiles» включен в ваши «INSTALLED_APPS» в «settings.py»

INSTALLED_APPS = [
    'django.contrib.staticfiles',
   
    #other apps
]

«django.controb.staticfiles» уже настроен django, что не очень полезно.

Bjorn Ironside 23.08.2024 14:03

Кажется, перед объявлением переменной staticfiles есть тип. Я только новичок в Django, надеюсь, это поможет

спасибо, но это была просто ошибка при публикации проблемы. если бы это было проблемой, я бы знал. Спасибо

Bjorn Ironside 27.08.2024 15:50
Ответ принят как подходящий
<img src = "{{ movie.image.url }}" class = "d-block w-100" alt = "{{ movie.title }}">

измените это на

<img src = "{{ movie.posterImage.url }}" class = "d-block w-100" alt = "{{ movie.title }}">

поскольку у вас есть поле с именем posterImage и вы ссылаетесь на него через image.url

большое спасибо, я применил ваше предложение: просто замените этот MEDIA_URL = '/media/' STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] # Создайте "статический" каталог, если он не существует os.makedirs( os.path.join(BASE_DIR, 'static'), Exist_ok=True) MEDIA_ROOT = os.path.join(BASE_DIR, 'media') с этим STATIC_URL = 'static/' STATIC_DIR = BASE_DIR / 'static' MEDIA_URL = '/ media/' MEDIA_ROOT = BASE_DIR/'media': и это работает нормально

Bjorn Ironside 27.08.2024 19:14

Другие вопросы по теме