Django、Jinja——使用对象属性动态引用静态图像 (slug)

Django, Jinja -- Dynamically Reference Static Images from using an object attribute (slug)

请原谅我问的可能是错误的问题,这是我使用 Django 的第二天。

我在数据库中有一个模型,该模型具有以下属性:

   'title': 'Entity title for Entity A',
   'slug': 'entity-a',
   '...': '...'

在我的 .html Jinja 模板中,我想使用循环加载多个实体。哪个有效。但是,我想使用 entity.slug.

引用一些静态加载的徽标

像这样...

{% for entity in entities %}
            {{ entity.slug }}
            <img src="{% static 'logos/{{entity.slug}}_50x50.png' %}" alt="" class="mr-2 img-thumbnail" width="50">
{% endfor %}

查看 IMG 标签内部。我有 {{entity.slug}}。 我怎样才能把它放进去让静态图片动态加载?

Atm,它正在渲染 {{}} see here

正确的方法是在您的 entity 模型中制作一个 属性 并在模板中使用它。像那样:

# models
class Entity(models.Model):
  ...
  
  @property
  def logo_url(self):
    return 'logos/%s_50x50.png' % self.slug

# tpl
<img src="{% static entity.logo_url %}">

但是您应该考虑使用 ImageField 而不是硬编码,因为它实际上是媒体文件(不是静态的)。

因此,如果您有 logo = models.ImageField(...),您将可以轻松地在模板中使用它,例如 {{ entity.logo.url }}