如何将字典值作为 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.pySTATIC_URL 的值是多少?并且,检查INSTALLED_APPS 里面是否有`'django.contrib.staticfiles',`值。 另外,Django 使用了一些其他的模板语言,与 Flask 中使用的 Jinja2 非常相似。但它不是金贾。请注意这一点,因为这两者之间存在一些差异。

以上是关于如何将字典值作为 django 中图像的路径传递?的主要内容,如果未能解决你的问题,请参考以下文章

访问报告中图像的相对路径

django imagefield中图像的相对url映射

通过传递的参数位置获取jQuery中图像的宽度? [复制]

JavaScript中图像的相对路径

Symfony2 树枝模板中图像的路径

画布中图像的 CORS 设置