Загруженные медиафайлы обслуживаются только после перезагрузки сервера 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