【问题标题】:Wrong upload path in DjangoDjango中的错误上传路径
【发布时间】:2020-05-09 13:03:52
【问题描述】:

我已经在 URL.py 中配置了 Django3.0 / Ubuntu 18 / NginX Media root:

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;
    }
}

在模型中,我有一些带有“upload_to”属性的 FileField 和 ImageField。当我通过管理员上传内容时,一切正常,文件将上传到子文件夹(eg. media/2020/avatar/1.jpg),但是当我通过表单上传时,文件将上传到正确的子目录,但图像(或文件)URL 显示根目录媒体(eg. media/1.jpg),当我点击 URL 时,它返回 404。我不知道为什么会这样,我已经在几十个网站上使用了这个配置,它们就像一个魅力。 有什么想法吗?

【问题讨论】:

    标签: django nginx django-3.0


    【解决方案1】:

    您说图像在文件夹 media/2020/avatar/1.jpg 中,而您的 url 是 media/1.jpg 这看起来很奇怪,因为 nginx 会尝试在 media 文件夹中而不是创建的子文件夹中找到它。您应该在您的 html 中提供像 media/2020/avatar/1.jpg 这样的网址。

    【讨论】:

    • 是的,这很奇怪。该 URL 仅显示媒体根目录。一切都好。即使我通过管理员上传文件或图像,模板中的URL是正确的!
    猜你喜欢
    • 2020-10-13
    • 2016-02-25
    • 2020-09-11
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 2017-07-27
    • 2020-05-31
    • 1970-01-01
    相关资源
    最近更新 更多