链接到 django 静态文件不起作用

Posted

技术标签:

【中文标题】链接到 django 静态文件不起作用【英文标题】:Link to a django static file doesnt work 【发布时间】:2016-02-11 03:25:54 【问题描述】:

在我的开发中。环境中有一个/static/文件夹,其中atm.为网站存储一些图像。

    我在 settings.py 中的 INSTALLED_APPS 变量确实包含 django.contrib.staticfiles 应用和

    STATIC_URL = '/static/'

    STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)

    我在 urls.py 中的 urlpatterns 变量有这个

    urlpatterns+= 静态(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

    最后,在我的 template.html 文件中,我正在遍历我的 cardset 对象,并尝试为每个对象提供这样的图像

    <img src=" STATIC_URL/images/cardset.image"  class="bn"/>
    

现在,问题是:

a.) STATIC_URL 解析为空字符串。

b.) 我想我不能在这里使用 static 标记,因为变量 cardset.image 在 django 模板中无法正常工作 % ... % 带有 static 标签。

您能否建议我在这里应该尝试做什么?

【问题讨论】:

settings.STATIC_ROOT 为空? @EchoUATeam 是的。不应该吗? 什么是static.image?它是一个 ImageField 吗?如果是这样,您根本不需要 STATIC_URL。 @DanielRoseman atm cardset.image 是一个字符串。我有点知道 ImageField 是一种正确的做法,但我试图了解这些事情是如何与 STATIC_URL 一起工作的。我应该立即跳到 ImageField 吗? 【参考方案1】:

在我看来你仍然可以使用static 标签。要在不使用图像字段的情况下构建字符串,您的链接只需稍微调整一下:

<img src="% static "images/" %cardset.image"  class="bn"/>

应该正确呈现在 html 中。根据您的cardset.image 的外观,您也许可以去掉中间的images/ 部分。

请记住,您还需要在模板顶部包含 % load staticfiles %

【讨论】:

耶!那行得通,谢谢!一个问题。我们正在讨论的这个模板扩展了另一个 base.html 模板。 base.html 模板确实有 % load staticfiles % 东西。为什么我需要在我们正在讨论的模板之上再指定一次? :) 没问题!如果您的 base.html 中已经有% load staticfiles %,则无需再次添加它,我提到它以防万一:) 现在,这很奇怪,因为没有模板顶部的 % load staticfiles % 它将无法工作。它说:“无效的块标签:'静态',预期'空'或'endfor'”。我的确切层次结构是 base.html -> catalog.html -> template_we_are_talking_about.html。你认为它可能由于层次结构的深度而不起作用吗? 是的,这很奇怪我也遇到了同样的错误,而且它不能归结为层次结构深度,因为我尝试使用深度为 2...它没有提到任何问题在文档中,所以我想您可能需要重复 % load staticfiles %,尽管我不确定这是否是最佳做法【参考方案2】:

由于cardset.image 是一个字符串,你的假设 b 是错误的;标签与变量完美配合:

 % static cardset.image %

STATIC_URL 不起作用的原因可能是因为您没有将它传递给模板;它不会自动出现,它只是一个标准模板变量。)

【讨论】:

首先谢谢!!快速提问:如何将字符串的“/images/”部分添加到模板中?

以上是关于链接到 django 静态文件不起作用的主要内容,如果未能解决你的问题,请参考以下文章

当我将可选参数传递给视图时,为啥我的 CSS 静态文件在 Django 中不起作用?

Django 1.6.1:静态标签不起作用

AWS 中的静态文件配置不起作用

我在将 Css 文件链接到 Django 模板时遇到问题

Django全局静态文件未加载

uwsgi静态文件加载错误表单django(react和webpack)