首页 > 解决方案 > Django模板用本地图像替换模型返回的文本

问题描述

我有一个模型,我从中提取数据并将其添加到我页面上的表格中。我要返回一个特定字段,其中包含 64 个版本的{x}. 用相应的图像替换每个版本。

例如,数据以{B}, {B}{U}, {B}{B},的格式返回{1}{W}{R}。有 64 种不同的版本{x},可以任意组合排列。我有.png每个版本的相应文件,我正在尝试用图像替换文本。

我的下面的代码只有在一个版本有一个实例时才有效,但是我也认为如果我为 64 个版本中的每一个都这样做会非常低效。如果有多个相同的版本,例如,它不起作用。{B}{B}

有没有一种方法可以遍历每个并用正确的图像替换它。

html

<td class="">
  {% if "{B}" in card.colors %}<img class="icon" src="{% static 'img/symbology/{B}.png' %}">{% endif %}
  {% if "{G}" in card.colors %}<img class="icon" src="{% static 'img/symbology/{G}.png' %}">{% endif %}
  {% if "{R}" in card.colors %}<img class="icon" src="{% static 'img/symbology/{R}.png' %}">{% endif %}
  {% if "{U}" in card.colors %}<img class="icon" src="{% static 'img/symbology/{U}.png' %}">{% endif %}
  {% if "{W}" in card.colors %}<img class="icon" src="{% static 'img/symbology/{W}.png' %}">{% endif %}
  ...
</td>

更新:

有 64 个版本{x},例如{1}, {2}, {3}, {4},{5}等。64 个版本是单数。所以每个版本都有对应的img。

然而,每个单一版本可以是任意组合。

例如:

如果返回的数据是{R},则应将其替换为以下图像:

在此处输入图像描述

但是,如果返回的数据是{R}{R}{R},则应将其替换为:

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

所以它会得到三遍图像。

字符和大括号对应于图像的名称。因此,上述应替换为三个<img class="icon" src="{% static 'img/symbology/{R}.png' %}">

这需要是动态的,因为模型返回了许多记录,并且返回的数据可以是以下任意组合{x}

标签: pythonhtmlpython-3.xdjangodjango-templates

解决方案


我不确定我是否完全理解您的问题,但您是否尝试遍历图像并将它们与图像 URL 的其余部分连接起来?我会尝试类似的东西:

{% for combo in card.colors %}
<img class="icon" src="{% static 'img/symbology/{{ combo }}.png' %}">
{% endfor %}

推荐阅读