Я настроил Django3.0 / Ubuntu 18 / NginX Media root в URL.py:
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
и в Nginx:
server {
listen 80;
server_name XXXXX.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/user/proj;
}
location /media/ {
root /home/user/proj;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/proj_gunicorn.sock;
}
}
и в моделях у меня есть FileField и ImageField с атрибутом upload_to. Когда я загружаю что-то через администратора, все в порядке, и файлы будут загружаться в подпапки (eg. media/2020/avatar/1.jpg)
, но когда я делаю это через формы, файлы будут загружены в правильные подкаталоги, но URL-адрес изображения (или файла) показывает root медиа (eg. media/1.jpg)
, и когда я нажимаю на URL, он возвращает 404. Я не могу понять, почему это происходит, я использовал эту конфигурацию на десятках веб-сайтов, и они работают как шарм. Есть идеи?