【问题标题】:Django, Jinja -- Dynamically Reference Static Images from using an object attribute (slug)Django,Jinja——使用对象属性动态引用静态图像(slug)
【发布时间】:2020-08-23 14:34:11
【问题描述】:

请原谅我问错了什么问题,这是我使用 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

【问题讨论】:

    标签: python django pycharm jinja2


    【解决方案1】:

    直接的方法是在您的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 }}

    【讨论】:

    • ImageFields 是否存储实际图像的数据?我已经在文件系统中有图像,只是用来引用路径。
    • 它们存储它的相对路径(在 db 中它们是 char 字段)。
    猜你喜欢
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 2013-07-27
    • 2015-05-19
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多