404 для статических изображений и медиа в Django в режиме производства
Я новичок в Django
Я пытаюсь запустить свое приложение в режиме Debug=False для имитации производственной среды, я добавил все статические url и корни. Моя программа генерирует статические изображения в реальном времени из видео, переданного приложению во время выполнения.
Это работает как ожидалось в режиме разработки, но я получаю 404 для изображений и видео в режиме производства, другие вещи, такие как bootstrap и JS загружаются нормально.
Раньше bootstrap и js также не загружались, затем я установил Whitenose и все начало работать, но теперь изображения и видео выдают 404.
Ссылка на код приложения: https://github.com/abhijitjadhav1998/Deepfake_detection_using_deep_learning/tree/master/Django%20Application
Для этого приложения я добавил STATIC_ROOT в settings.py
и добавил os.system('python manage.py collectstatic --noinput')
в папку views.py, чтобы заполнить статический путь изображениями и видео перед отправкой ответа на html-страницу.
Но все равно я получаю 404, я также проверил, что файл с таким же именем доступен в локации.
Я получаю следующую ошибку:
Ошибка из консоли: Невозможно загрузить js, bootstrap, но невозможно загрузить изображения и видео

Код из settings.py, который я добавил
DEBUG = False
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(PROJECT_DIR, 'uploaded_images'),
os.path.join(PROJECT_DIR, 'static'),
os.path.join(PROJECT_DIR, 'models'),
]
STATIC_ROOT = os.path.join(PROJECT_DIR, 'staticfiles')
CONTENT_TYPES = ['video']
MAX_UPLOAD_SIZE = "104857600"
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(PROJECT_DIR, 'uploaded_videos')
Если вы используете дистрибутив Linux, убедитесь, что у вас настроены правильные привилегии доступа для пользователя веб-сервера. Для nginx, я думаю, это www-data.
Django не обслуживает статические файлы в production автоматически, нам понадобится веб-сервер типа apache/Nginx для обслуживания статических файлов.
Я смог обслуживать статические файлы, разместив приложение на Nginx в качестве обратного прокси-сервера и Gunicorn для обработки запросов Django. Я использовал docker для размещения приложения.
Пошаговое руководство приведено в этом Блоге