首页 > 解决方案 > 为什么 Django HTML 标签不能在字符串中工作?

问题描述

假设我有这样的图像源:

<img src="{% static 'images/category1.png' %}">

这完全正常 - 它找到图像并正确显示它。但是,它在一个 for 循环中,所以我将为每个元素使用不同的图像(在这种情况下,每个类别都有不同的图像)

由于某种原因,这不起作用:

{% for cat in category %}
...
<img src="{% static 'images/{{cat.category_slug}}.png' %}">
...
{% endfor %}

我很肯定 {{cat.category_slug}} 变量具有正确的名称作为我的图像,如下所示:

<p>{{cat.category_slug}}</p>

在我的网站上显示“category1”,这是正确的。

标签: pythonhtmldjango

解决方案


您可以使用|add模板标签 [Django-doc]来执行字符串连接:

<img src="{% static 'images/'|add:cat.category_slug|add:'.png' %}">

但是在模型中简单地使用方法可能更优雅Category。例如:

class Category(models.Model):
    category_slug = models.SlugField(max_length=128)
    # …

    def get_image(self):
        return f'images/{self.category_slug}.png'

那么您可以将其实现为:

<img src="{% static cat.get_image %}">

推荐阅读