mirror of
https://gitverse.ru/kpa39l/vesti.git
synced 2026-09-29 18:05:03 +00:00
1.9 KiB
1.9 KiB
Why
Пользователь не видит, что за картинка приложена к новости в карточке кандидата:
в шаблоне candidates.html для постов с media_path показывается только бейдж
«🖼 медиа», а само изображение не отображается. В web/app.py нет роута, который
отдаёт медиа-файл (есть только /static для bootstrap), поэтому <img> некуда указывать.
Аналогично в published.html медиа не показывается.
What Changes
- Добавить в
web/app.pyроутGET /media/{filename}(с авторизацией, как у других роутов), который отдаёт файл из/opt/vesti/media/или/opt/vesti/media/media/(исторический баг путей: у старых постов media_path =media/media/<file>). Безопасно: только basename (защита от path traversal), отдаём FileResponse. - В
candidates.htmlиpublished.htmlдля постов сmedia_pathвыводить<img src="/media/{{ basename(media_path) }}" class="img-fluid ...">(направление на роут; если файла нет — не показывать/плейсхолдер). - Медиа в карточке: фото/видео. Для изображений —
<img>, для видео —<video controls>.
Why Not
- Отдавать медиа через /static нельзя: файлы вне static/ и большие; роут нужен именно для media/.
Open Questions
- Путь
media_pathв БД:media/<file>илиmedia/media/<file>— резолвить через basename (имя файла уникально в каталоге).