В настоящее время я работаю над проектом django, и у меня возникли проблемы с работой с MEDIA и загрузкой изображения графика.
Внутри settings.py я добавил приведенный ниже код.
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')`
Домашняя страница.html:
<img src = "{{ MEDIA_URL }}image.png" alt = "Uploaded Image" style = "max-width: 100%; height: auto;">
Домашняя страница->urls.py
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Относительный путь от html-файла к изображению: media/graph/upload/image.png
Я получаю ошибку
Not Found: /graph/upload/image.png.
Основной проект
--App
----settings.py
--HomePage
----HomePage.html
----urls.py
--media
----graph
------upload
--------image.png
Спасибо за все что ты сделал для меня! Дайте мне знать, если вам понадобится еще код, я просто не хотел делать это слишком долго, если это простая ошибка.
Я также пробовал жестко запрограммировать путь к каталогу, но это тоже не сработало, поэтому я думаю, что что-то не понимаю с Django.
@CoffeeBasedLifeform эй, я не устанавливаю Media_URL сам. Нужно ли мне это где-то делать? В конечном итоге я буду передавать имя файла следующим образом <img src = "{{ MEDIA_URL }}{{ filename }}" alt = "Загруженное изображение" style = "max-width: 100%; height: auto;">
Ответ Виктора Дуарте ниже описывает, как Django может добавить переменную MEDIA_URL
в контекст шаблона, чтобы вы могли использовать ее в шаблоне. С вашими настройками {{ MEDIA_URL }}image.png
создаст URL-адрес /media/image.png
. Однако, учитывая структуру каталогов, вам, вероятно, понадобится {{ MEDIA_URL}}graph/upload/image.png
.
@CoffeeBasedLifeform огромное спасибо, у вас с Виктором все заработало!
если вы хотите использовать {{ MEDIA_URL }}
в своих шаблонах, добавьте django.template.context_processors.media
в опцию context_processors
TEMPLATES
.
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"APP_DIRS": True,
"OPTIONS": {
"context_processors": [
"django.template.context_processors.media"
],
},
},
]
Это сработало! Спасибо!
Какой окончательный URL-адрес отображается в img src? Вы сами устанавливаете переменную шаблона
MEDIA_URL
или используете встроенный медиа контекстный процессор django?