如何将字典值作为 django 中图像的路径传递?
Posted
技术标签:
【中文标题】如何将字典值作为 django 中图像的路径传递?【英文标题】:How to pass dictionary value as path to image in django? 【发布时间】:2020-01-09 13:58:18 【问题描述】:我是 django 的初学者,目前正在努力将 dict 值作为图像路径传递。我有以下格式的字典:-
'features': [
'icon': 1,
'heading': 'Lorem Ipsum',
'description': 'Neque porro quisquam est qui ipsum quia dolor sit amet, adipiscing velit quia dolor sit
amet, adipisci velit'
,
'icon': 2,
'heading': 'Lorem Ipsum',
'description': 'Neque porro quisquam est qui ipsum quia dolor sit amet, adipiscing velit quia dolor sit
amet, adipisci velit'
]
在模板中,我通过以下方式访问图像:-
% for feature in content.features %
<div class="col-lg-4 col-md-6 col-sm-12 mx-auto my-1 mt-5 text-center d-flex flex-column align-items-center">
<div class="h-40 w-100 d-flex">
<img class="img-fluid mx-auto" src="% static "base/images/feature.icon" %"
>
</div>
<div class="h-60 w-100 d-flex flex-column">
<h4 class="feature-caption"> feature.heading </h4>
<p class="feature-description p-2 pt-3 pb-3"> feature.description </p>
</div>
</div>
% endfor %
但是,图像没有加载。有人可以建议如何解决这个问题吗?
【问题讨论】:
你用的是jinja2还是djangos模板synax?因为% static "base/images/feature.icon" %
在django语法中是无效的(好吧,它是有效的但是你不会在字符串中得到feature.icon
的值)
@Ralf 为什么?这是完全有效的,这就是您在 django 模板中访问字典键的方式。
@dirkgroten 在模板标签中使用
?这对我来说是新的......
@vineet 查看浏览器源代码中的最终 url(使用开发工具)。
@Ralf 哎呀错过了。你当然是对的。我以为你在谈论字典访问。
【参考方案1】:
如果您使用 Django 模板语法,我认为您不能在模板标签(使用 % %
)内使用 use
。所以以下部分无效:
src="% static "base/images/feature.icon" %"
您可以尝试改用add template filter。 此过滤器不适用于字符串,仅用于数字,但如果两个部分都是字符串,那么它无论如何都可以工作。像这样:
% with icon_as_str=feature.icon|stringformat:'d' %
src="% static 'base/images/'|add:icon_as_str %"
% endwith %
或者只是将您的 icon
转换为视图中的字符串,然后忘记 % with ... %
块。
相关回答:https://***.com/a/4524851/9225671
【讨论】:
否则就在静态后面追加图标:% static 'base/images/' % feature.icon
【参考方案2】:
假设从您的观点来看,您将字典作为名为 content
的变量传递,那么您调用所需值的方式是正确的:
% for feature in content.features %
feature.icon
feature.heading
feature.description
% endfor %
在此之前,请确保将 % load staticfiles %
声明为 html 文件中的第一行。
【讨论】:
没有回答问题 在settings.py
内STATIC_URL
的值是多少?并且,检查INSTALLED_APPS
里面是否有`'django.contrib.staticfiles',`值。
另外,Django 使用了一些其他的模板语言,与 Flask 中使用的 Jinja2 非常相似。但它不是金贾。请注意这一点,因为这两者之间存在一些差异。以上是关于如何将字典值作为 django 中图像的路径传递?的主要内容,如果未能解决你的问题,请参考以下文章