静态文件 - 找不到页面

Posted

技术标签:

【中文标题】静态文件 - 找不到页面【英文标题】:Static Files - Page Not Found 【发布时间】:2012-07-11 08:40:10 【问题描述】:

为了查看静态文件(图像和 pdf),我定义了 STATIC_DIRS,其值包含我上传这些文件的目录名称:

STATICFILES_DIRS = (
    '/home/alessandro/Scrivania/progetto/media/photos/custodia/',
    '/home/alessandro/Scrivania/progetto/media/definitiva/',
    '/home/alessandro/Scrivania/progetto/media/proforma/',
    '/home/alessandro/Scrivania/progetto/media/fpdf/';
)

在 STATIC_URL 中:

STATIC_URL = '/static/' 

在已安装的应用程序中:

INSTALLED_APPS = (
   ……

    'django.contrib.staticfiles',

)

权限是0777。

现在,当我想查看图像或 pdf 文件时,我会收到此错误消息。 找不到页面

我正在使用这个网址: http://127.0.1:8000/home/alessandro/Scrivania/progetto/media/photos/custodia/powered_by.png

有什么想法吗?为什么会出现这个问题?

【问题讨论】:

看看***.com/questions/10460028/… app-folder/static/ - 很好。 project-folder/static/ - 不好。对于未来的观众,这是我的错误导致 404 错误。 /static/ 应该是 a sibling of models.py。 【参考方案1】:

默认情况下,Django 的内置开发服务器不提供静态和媒体文件。如果您希望它直接提供这些文件,请将 staticfiles_urlpatternsMEDIA_URL 模式添加到您的 urlconf。

from django.conf import settings
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf.urls.static import static

# ... the rest of your URLconf goes here ...

urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

这只有在DEBUGTrue 时才有效。

有关详细信息,请参阅corresponding docs。

注意:您不应该在生产环境中这样做!在生产模式下始终为静态文件使用单独的网络服务器。

【讨论】:

谢谢,我编辑了 urls.py,所以我插入了: from django.conf import settings from django.contrib.staticfiles.urls import staticfiles_urlpatterns from django.conf.urls.static import static # 。 .. 你的 URLconf 的其余部分在这里... urlpatterns += staticfiles_urlpatterns() urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT),重新加载页面,然后“找不到页面”。 -> 'alessandro/Scrivania/progetto/media/photos/custodia/shop-ad.jpg' 找不到错误在哪里? @AlexanderT 为什么将 MEDIA_URL 和 MEDIA_ROOT 替换为 STATIC_URL 和 STATIC_ROOT? 因为图片和pdf文件是静态文件?还是不行? @AlexanderT 哦,我搞混了。在 django 中,静态文件和媒体文件是有区别的。静态文件(在 STATIC_ROOT 中)是只读的,并且在运行 collectstatic 时仅生成一次。媒体文件(在 MEDIA_ROOT 中)通常不是只读的,即它们由上传、动态生成的文件和其他内容组成。 @AlexanderT 在您的情况下,您创建了一个名为“media”的文件夹并将其添加到静态文件 dirs 变量中,这起初让我感到困惑。在这种情况下,您甚至不需要包含 static() 调用的第二个 urlpatterns 行,因为 staticfiles_urlpatterns() 应该已经为您提供了所有静态文件。重新检查您的 settings.py,确认 STATIC_ROOT 和 MEDIA_ROOT 是不同的文件夹并检查 STATIC_URL 配置。

以上是关于静态文件 - 找不到页面的主要内容,如果未能解决你的问题,请参考以下文章

通过 django 提供静态文件时找不到页面

捕获静态“找不到文件”错误

django 改了静态文件但是页面没有变

django -静态文件能加载进入,但是在页面上却显示不出来

gcc找不到静态库中的函数

django中怎么载入css等静态文件