Задать вопрос
@Nposk

Как отобразить картинку в шаблоне Django?

Перерыл весь интернет, не могу понять почему не отображаются картинки в шаблоне Django.
Самое странное, что по лога страница как будто даже не запрашивает картинку с сервера.
settings.py
MEDIA_ROOT = os.path.join(BASE_DIR, 'files', 'media')
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(BASE_DIR, 'files', 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),)

urls.py
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('webapp.urls')),
]
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Шаблон
{% if item.PM_image %}
    <img style="width:100px; height: 100px" scr="{{ item.PM_image.url }}" />
    {{ item.PM_image }}
{% endif %}

Код страницы в браузере
<td>
<img style="width:100px; height: 100px" scr="/media/printermodel/M2040dn.png">
printermodel/M2040dn.png                             
</td>

Логи сервера
web_1  | [22/Jun/2021 05:15:03] "GET /pm/ HTTP/1.1" 200 7506
web_1  | [22/Jun/2021 05:15:03] "GET /static/css/simple-sidebar.css HTTP/1.1" 200 963
web_1  | [22/Jun/2021 05:15:03] "GET /static/vendor/jquery/jquery.min.js HTTP/1.1" 200 89476
web_1  | [22/Jun/2021 05:15:03] "GET /static/vendor/bootstrap/js/bootstrap.bundle.min.js HTTP/1.1" 200 84152
web_1  | [22/Jun/2021 05:15:03] "GET /static/vendor/bootstrap/css/bootstrap.min.css HTTP/1.1" 200 160392
web_1  | [22/Jun/2021 05:15:03] "GET /static/vendor/jquery/jquery.js HTTP/1.1" 200 287630
web_1  | [22/Jun/2021 05:15:04] "GET /static/vendor/bootstrap/css/bootstrap.min.css.map HTTP/1.1" 200 646986
web_1  | [22/Jun/2021 05:15:04] "GET /static/vendor/bootstrap/js/bootstrap.bundle.min.js.map HTTP/1.1" 200 315680
  • Вопрос задан
  • 170 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
@daho005
Попробуй в urls.py написать в конце:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += [re_path(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT,}),]

Перед этим импортировав:
from django.views.static import serve
from django.urls import re_path
Ответ написан
EtherDaler
@EtherDaler
Еще зеленый
в главных урлах после паттернов прописываете
urlpatterns[...] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

И потом если у вас Debug = True, то закоментируйте Static_Root и оставьте Static_files_dirs. И наоборот, если Debug = False, то Static_root оставьте, а Static_files_dirs закоментируйте
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы