Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
即使文件确实存在,Django媒体文件也会获得404_Django_Http Status Code 404_Django Urls_Django Models - Fatal编程技术网

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

即使文件确实存在,Django媒体文件也会获得404,django,http-status-code-404,django-urls,django-models,Django,Http Status Code 404,Django Urls,Django Models,我意识到这是一个在这里的问题中提出的很多问题(我读了很多),快速解释开发场景并不是一件小事,所以我将它压缩成一个具体的简单问题,可以解释一切,我没有遇到: 不管模板和设置参数如何生成最终url,它们最终都会成功生成一个图像url,粘贴到其中一个呈现的页面中(类似于:localhost:8000/static/images/image name.jpg),我可以看到,一切都很完美 我遇到的问题是在另一个代码部分(和应用程序)中,虽然生成的url似乎与我现有的目录和文件匹配,但我不知道为什么失败。

我意识到这是一个在这里的问题中提出的很多问题(我读了很多),快速解释开发场景并不是一件小事,所以我将它压缩成一个具体的简单问题,可以解释一切,我没有遇到:

不管模板和设置参数如何生成最终url,它们最终都会成功生成一个图像url,粘贴到其中一个呈现的页面中(类似于:localhost:8000/static/images/image name.jpg),我可以看到,一切都很完美

我遇到的问题是在另一个代码部分(和应用程序)中,虽然生成的url似乎与我现有的目录和文件匹配,但我不知道为什么失败。 因此,我所做的只是简单地将我似乎无法加载的图像复制到同一个合法文件夹中(只是将文件粘贴在那里),修改url(localhost:8000/static/images/new-image-name.jpg),并获得404(即使在重新加载django之后)。 我不认为这与db对象(ImageField等)有任何关系,因为我只是在挑战url解析和转换机制——并且不明白为什么它适用于某些路径上的一些但不是所有图像(相同的jpg格式,图像在图像编辑器中成功加载,事实上是在mspaint中绘制的)

(url包括urlpatterns+=staticfiles\u urlpatterns(),就我所知,这是唯一与静态相关的url行)

任何想法都会被感激,我一定是错过了一些关于url解码


谢谢。

事实上,这只是因为web服务器将所有请求的处理转发给应用程序服务(wsgi、uwsgi),而应用程序服务将请求转发给Django

也许我错了,但我认为应用程序服务不应该担心静态文件。 而且,因为在应用程序的位置之前,我已经在web服务器(在我的示例中是nginx)配置中为静态文件夹创建了单独的位置:

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

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

您是否在已安装的应用程序中使用静态文件应用程序?您的静态/MEDIA\u URL和静态/MEDIA\u根目录设置是什么?你有DEBUG=True还是False?我希望这个干净而一般的问题(将文件粘贴到同一个文件夹中,但url对新文件仍然没有响应)可以省去这些技术性的麻烦,并且仍然可以引导我找到答案。。静态URL为“/STATIC/”,媒体URL为“/STATIC/MEDIA/”。(虽然这两个——主要是媒体根目录——在我的服务器和windows development box之间是不同的,这就是我遇到这个问题的地方)这只是本地工作和远程工作之间的区别吗?或者在这两个地方都发生了相同的行为?我们还没有在linux服务器上测试过这一点(并且希望知道之前发生了什么)。你同意这是一种奇怪的行为吗?如果你在本地运行并利用staticfiles应用程序,有些文件没有被提供,有些文件被提供,这似乎很奇怪。