После того, как пользователь загрузил изображение, он всегда возвращает ошибку 404. Я думаю, что это ошибка конфигурации Nginx, но я не уверен в этом, и после нескольких часов поиска и попыток я все еще не понимаю проблему.
Вот мои настройки.py:
DEBUG = False
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static'),
)
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
Далее мой urls.py:
urlpatterns = [
...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
И мой файл конфигурации Nginx:
location ^/static/ {
autoindex on;
alias /home/user/mywebsite/site/static;
}
location ^/media/ {
alias /home/user/mywebsite/site/media;
}
Вот сгенерированный URL изображения: https://www.mywebsite.com/media/CACHE/images/img/venus/758c9f7d70d0c64b5631cc865986de48.jpg (404)
Я использую Django Imagekit для обработки загруженных изображений. Я всегда находил эти URL-адреса странными ... может быть, ImageKit нужна дополнительная настройка?
Мои статические и медиа-каталоги находятся в /mainappdjango/static, а не в корневом каталоге. Если я этого не сделаю, моя статика не будет загружена. Изображение хорошо загружено на сервер (я могу получить к нему доступ по FTP или SSH).
Есть ли у вас какие-либо идеи о проблемах, вызывающих эти ошибки 404? :/
Большое спасибо!
/mainappdjango/static/media
, но nginx указывает наmywebsite/site/media
. И у вас не должно быть URL-адреса мультимедиа в вашем urls.py. Ваше приложение Django не обслуживает медиафайлы. - person dirkgroten   schedule 21.09.2018pwd
показывает полный путь. В любом случае, это путь, который нужен nginx. - person dirkgroten   schedule 22.09.2018if settings.DEBUG
, чтобы он не использовался для производства. Ваш MEDIA_ROOT может быть вне каталога вашего проекта, без проблем. Также работает с локальнымиrunserver
- person dirkgroten   schedule 22.09.2018