静态文件 - 找不到页面
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_urlpatterns
和 MEDIA_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)
这只有在DEBUG
是True
时才有效。
有关详细信息,请参阅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 配置。以上是关于静态文件 - 找不到页面的主要内容,如果未能解决你的问题,请参考以下文章