【问题标题】:django print only one value in for loop in templatedjango 在模板的 for 循环中只打印一个值
【发布时间】:2014-11-27 11:21:42
【问题描述】:

我只想在模板中显示一个来自 for 循环的值。 假设我有这个:

{% for category in categories %}
    {{category.name}}
    <a href="{% url "my_url" category.id %}">See All</a>
{% endfor %}

如果我有 5 个类别,则查看全部打印 5 次。怎么只能打印一次。。 提前谢谢..

【问题讨论】:

  • 为什么需要在“查看全部”链接中包含“category.id”?
  • 假设我想在另一个链接中重定向..将其视为详细信息..
  • 只打印一次,什么时候打印?
  • 链接应该指向什么?
  • 我只想打印一次查看全部。说查看全部指向任何带有类别 id 的链接??如果我在循环之外写查看所有内容,我将无法访问 category.id...

标签: python django loops templates


【解决方案1】:

您应该有一个主页,其中包含您将发送的所有类别context['categories']

如果您不需要详细的类别之间的链接,只需在 views.py 中发送当前类别:

context['category']

编辑: 如果你想做的只是打破循环,你不能在 django 模板中,但你可以使用slice

{% for category in categories|slice:":1" %}

它只会循环一次

【讨论】:

    【解决方案2】:

    您必须限制对象并将该对象发送到模板

    tempalte_var['content'] = Categories.objects.all()[:5]
    

    【讨论】:

      【解决方案3】:

      不是最好的方法,但检查一下:

      {% for category in categories %}
          {% if categories|length > 1 %}
              <a href="{% url "my_url" category.id %}">See All</a>
          {% else %}
              {{categories[1].name}}
              <a href="{% url "my_url" category.id %}">{{category.name}}</a>
          {% endif %}
      {% endfor %}
      

      【讨论】:

        【解决方案4】:

        此代码将打印类别中的第一个元素

            {% for category in categories %}
                {% if categories | first %}  
                    {{category.name}}
                    <a href="{% url "my_url" category.id %}">See All</a>
                {% endif %}
        
            {% endfor %}
        

        【讨论】:

          猜你喜欢
          • 2015-03-14
          • 1970-01-01
          • 1970-01-01
          • 2019-06-04
          • 1970-01-01
          • 2021-02-14
          • 2021-01-30
          • 2022-01-23
          • 1970-01-01
          相关资源
          最近更新 更多