【问题标题】:STATIC files are not showed in Django templates静态文件未显示在 Django 模板中
【发布时间】:2012-06-03 16:20:09
【问题描述】:

我正在尝试使用 {{ STATIC_URL }} 标签在我的 Django 模板中显示图像/js/css。理论上,这是可行的,因为在浏览器中,当我看到打印的代码时,请求文件的路径类似于“/static/images/blabla.jpg”。但是文件没有显示,所以我想问题出在 Django 项目中。

我的设置如下所示:

STATIC_ROOT = '/absolute/path/to/static'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    '/absolute/path/to/static'
)

在我的 urls.py 中:

url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}),

但我不知道为什么静态目录中的所有文件都没有显示在模板中。

任何提示或建议?

谢谢小伙伴们。

【问题讨论】:

  • 在浏览器中打开 /static/images/blabla.jpg 会发生什么?请发布完整的详细信息。
  • 浏览器返回 HTTP 404 错误。例如,localhost:8000/static/images/hi.jpg 并不会显示。只有 404。

标签: python django templates static settings


【解决方案1】:

首先,看起来您的设置有误。你应该明白django.contrib.staticfilescollectstatic命令:

将静态文件收集到 STATIC_ROOT。 [...] 使用启用的查找器搜索文件。默认是查看 STATICFILES_DIRS 中定义的所有位置以及 INSTALLED_APPS 设置指定的应用程序的“静态”目录。

所以,STATICFILES_DIRS 包含 STATIC_ROOT 似乎是一个错误,因为 STATICFILES_DIR 的内容被 collectstatic 复制到 STATIC_ROOT 中。

网址不是必需的。您应该:

如有疑问,findstatic 命令也可能有用。

django.contrib.staticfiles 一开始可能看起来有点混乱,但是当你完全理解它时你就会喜欢它

【讨论】:

  • 天哪,现在我了解它是如何工作的(或几乎)。我已经修改了我的 settings.py 和 urls.py(删除了 static_urlpatterns),现在都已经按预期工作了。非常感谢伙计。我会投票给你,但我还不能。对不起 =(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-30
  • 1970-01-01
  • 2013-09-14
  • 2016-03-02
  • 2019-04-13
  • 1970-01-01
  • 2017-04-14
相关资源
最近更新 更多