【问题标题】:Tag inside tag Django template标记内标记 Django 模板
【发布时间】:2020-10-29 18:48:10
【问题描述】:

首先,让我展示一下我们的views.py文件。

context = {
        'id' : id,
        'durum' : durum,
        'range': range(len(id)),
}

我在模板中有这样的数据;

context.id = [12, 10, 10] 
context.durum = ['UPL','PPL','FIUPL']

我想像这样匹配这些数据;

12 UPL
10 PPL
10 FIUPL

我为此创建了一个 for 循环,但需要编辑

{% for i in context.range %}
    {{ context.id }}
    {{ context.durum }}
{% endfor %}

像这样;

{% for i in context.range %}
    {{ context.id.i }}
    {{ context.durum.i }}
{% endfor %}

但我不能在循环中使用变量 i。

【问题讨论】:

    标签: python django templates django-templates tags


    【解决方案1】:

    在视图中使用zip

    例如:

    context = {
            'data' : zip(id, durum)
    }
    

    然后在模板中

    用途:

    {% for id, durum in data %}
        {{ id }}
        {{ durum }}
    {% endfor %}
    

    【讨论】:

      【解决方案2】:

      您可以使用列表推导。

      所以,例如:

      my_list = list(zip(context['id'], context['durum'], context['range']))

      然后在模板中,可以使用:

      {% for item in my_list %}
          {{ item.0 }} -- { item.1 }}
      {% endfor %}
      

      【讨论】:

        【解决方案3】:

        嗯,你好像是从其他语言迁移到 python 的。您通常不会在 python for 循环中使用索引(它们更容易和更直观),这就是为什么您很难“配对”这些值。如果您仍然可以重构代码,而不是使用匹配索引上的属性列出列表,请使用dict。一 - 它会让你在 django 模板中轻松解压

        {% for id, durum in my_dict %}
        {{ id }} {{ durum }}
        {% endfor %}
        

        二 - 它将防止与错误索引相关的任何错误,因为您只需调用id,它就会得到正确的durum。三 - 更新此类数据集将非常容易。

        my_dict.update({new_id: new_durum})
        

        请考虑花一点时间学习新东西,因为这会让您的 Python 体验更加愉快。哦,顺便说一句 - 大多数时候你不必指定 {{ context.something }} 调用 - 它足以调用 {{ something }}

        【讨论】:

          猜你喜欢
          • 2020-09-27
          • 1970-01-01
          • 1970-01-01
          • 2014-08-07
          • 2011-09-17
          • 2012-11-29
          • 1970-01-01
          • 2017-03-09
          • 1970-01-01
          相关资源
          最近更新 更多