即使文件确实存在,Django媒体文件也会获得404

时间:2013-02-25 13:55:11

标签: django http-status-code-404 django-urls django-models

我意识到这是一个在这里问题中提出了很多问题(我读了很多),并且快速解释开发场景并不容易,所以我会把它压缩成一个特定的简单问题可以解释一切,我没有遇到过:

无论模板和设置参数如何生成最终URL,它们最终都会成功生成粘贴在其中一个渲染页面中的图像URL(类似于:localhost:8000 / static / images / image-name)。 jpg)我可以看到,一切都很完美。

我遇到的问题是在不同的代码部分(和应用程序)中,虽然生成的url似乎与我现有的目录相匹配,但仍然会获得404s。文件,我不知道它为什么失败。 所以我所做的只是将我似乎无法加载的图像复制到同一个legal-folder(只是粘贴文件),并修改了url(localhost:8000 / static / images / new-image-name。 jpg) - 并获得了404(甚至在重装django之后)。 我不认为这必须对db-objects(ImageField等)做任何事情,因为我只是挑战url-parse-and-conversion机制 - 并且无法弄清楚为什么它适用于某些但不是全部某些路径上的图像(相同的jpg格式,图像在图像编辑器中成功加载,实际上是在mspaint中绘制的)。

(网址包括urlpatterns + = staticfiles_urlpatterns(),据我所知,这是唯一与静态相关的网址。)

任何想法都会受到赞赏,我必须遗漏一些关于url-decoding的内容。

感谢。

1 个答案:

答案 0 :(得分:0)

实际上,这只是因为Web服务器将对请求转发给Django的所有请求转发到应用程序服务(wsgi,uwsgi)。

可能是我错了,但我认为应用服务不应该担心静态文件。 并且因为我在Web服务器(在我的情况下为nginx)中创建了单独的位置,在应用程序的位置之前为静态文件夹配置:

location /static/ {
    access_log        off;
    expires           max;
}

location / {
    include         uwsgi_params;
    uwsgi_pass      unix:///run/uwsgi/app/mysite/socket;
}