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:

http://127.0.0.1:8000/

Мое вторичное приложение имеет url:

http://127.0.0.1:8000/w/

Когда я пытался отобразить изображения, он пытался загрузить их из:

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}}">

Научился ли я чему-то? Пока не уверен... но сейчас я просто буду наслаждаться чувством успеха!

Вернуться на верх