Загруженные медиафайлы обслуживаются только после перезагрузки сервера django

Я совсем новичок в разработке django, устал искать это конкретное мое дело.

У меня есть приложение django, запущенное на моей windows 10 с debug = False. Я как раз собираюсь развернуть свое приложение на дроплете Digital Ocean.

Я сталкиваюсь со многими проблемами развертывания и статических + медиа файлов. Со статическими файлами я вроде разобрался, они в порядке, медиа файлы тоже загружаются.

Но, когда я загружаю новое изображение, обращаюсь к нему напрямую, оно говорит, что ресурс, который я ищу, не найден. Но оно 100% загружено в папку media/images, и я могу его видеть. Сегодня, я думаю, я нашел некоторое решение, я могу получить доступ к медиа файлам только после перезагрузки сервера django. Я хочу знать, почему так происходит?

Мой файл settings.py

И мой wsgi.py, потому что я изменил его с помощью приложения WhiteNoise для обслуживания статических + медиа файлов


import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'MarketingNotes.settings')

application = get_wsgi_application()


from whitenoise import WhiteNoise

application = WhiteNoise(application, root='c:/Users/Peter/Django/MarketingNotes/mnotes/static')
application.add_files('c:/Users/Peter/Django/MarketingNotes/media', prefix='media/')

Потом я попытался найти способ перезагрузить сервер, когда пользователь загружает изображение, но это кажется плохой идеей, так что теперь я должен придумать какой-то код linux для перезагрузки сервера gunicorn в моем дроплете, или в django есть что-то для перезагрузки сервера после изменения папки media?

Простите за мой английский

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static")
]
STATIC_ROOT = os.path.join(BASE_DIR, 'assets')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

Попробуйте заменить эти настройки в settings.py, если это не работает, значит это проблема вашей IDE ..

Это связано с Whitenoise. Whitenoise проверяет статические файлы только при запуске, поэтому файлы, добавленные после запуска приложения, не будут видны.

Поскольку Whitenose не подходит для обслуживания загруженных пользователем медиафайлов.

Пожалуйста, ознакомьтесь с официальной документацией Whitenose. http://whitenoise.evans.io/en/latest/django.html#serving-media-files

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