Django/Apache2 не обслуживает медиафайлы в продакшене при "ручном" добавлении новых медиафайлов
Я использую Django (Django 4.0.3.) с Apache2 для запуска веб-сервера и локального обслуживания медиа.
Часть сайта представляет собой складской трекер товаров и работает нормально, пользователь может загружать медиа (изображения) в товары, категории и т.д. и все отображается как ожидается.
В другой части отображаются несколько изображений, загруженных с ftp-сервера с помощью скрипта, который я написал на python, который загружает изображения, хранит их в определенной папке (в папке media) и редактирует Sqlite3 db, чтобы указать Django на правильный путь к медиа - эти изображения, однако, не отображаются, когда "debug=False". Это работает, когда "debug=True".
При нажатии на изображение я получаю сообщение:
Не найдено
.Запрошенный ресурс не найден на этом сервере.
Это мой первый проект Django, поэтому я немного не в своей тарелке и не совсем уверен, что нужно гуглить.
У кого-нибудь есть идеи, как заставить это работать или как я могу сделать это другим способом?
Мое предположение, что это как-то связано со статическими файлами?
Структура проекта:
|mysite
|__warehouse
|__static
|__mysite
|__media
| |__lots of folders
| |__(image)
|__cameras
Apache django.config:
Alias /static /home/usr/mysite/static
<Directory /home/usr/mysite/static>
Require all granted
</Directory>
Alias /media /home/usr/mysite/media
<Directory /home/usr/mysite/media>
Require all granted
</Directory>
<Directory /home/usr/mysite/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Static/Media root/url:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = 'static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = 'media/'
Пробовали ли вы что-то вроде:
STATIC_ROOT = '/home/usr/mysite/static'
STATIC_URL = 'static'
MEDIA_ROOT = '/home/usr/mysite/media'
MEDIA_URL = 'media'
Я понял это.
Мой основной склад приложения имеет url:
Мое вторичное приложение имеет url:
Когда я пытался отобразить изображения, он пытался загрузить их из:
http://127.0.0.1:8000/w/media/image.jpg вместо http://127.0.0.1:8000/media/image.jpg
Добавил "/" перед url в html и теперь, кажется, все работает нормально.
<img src=/{{cam.cam_media}} class="rounded img-fluid" alt="/{{cam.cam_media}}">
Научился ли я чему-то? Пока не уверен... но сейчас я просто буду наслаждаться чувством успеха!