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, я также проверил, что файл с таким же именем доступен в локации.

Я получаю следующую ошибку:

enter image description here Ошибка из консоли: Невозможно загрузить js, bootstrap, но невозможно загрузить изображения и видео enter image description here

Код из 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 для размещения приложения.

Пошаговое руководство приведено в этом Блоге

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