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 }}
。
请原谅我问的可能是错误的问题,这是我使用 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 }}
。