【问题标题】:How To Use Django Cycle Tag如何使用 Django 循环标签
【发布时间】:2016-07-08 09:53:40
【问题描述】:

希望这是一个非常简单的问题。我的最终目标是能够在表格中查看我的数据库条目,我可以通过列标题对其进行排序。我已经阅读了循环标签上的documentation,但不知道它们是指'row1''row2'

{% for o in some_list %}
    <tr class="{% cycle 'row1' 'row2' %}">
        ...
    </tr>
{% endfor %}

其次,我如何将它正确地实现到我的模板中?我正在使用一个非常简单的JS library,它将允许排序:

page.html

{% if Variable %}
    <table class="sortable">
        <tr>
            <th>Title 1</th>
            <th>Title 2</th>
            <th>Title 3</th>
            <th>Title 4</th>
            <th>Title 5</th>
        </tr>
    {% for stuff in Variable %}

        <tr class="{% cycle 'stuff' %}">    
            <td>
                <a href="{% url 'detail_page' stuff.id %}">
                {{ stuff.Name|capfirst }}</a>
            </td>
        </tr>
    {% endfor %}
    </table>
{% else %}
    <p>No Results Found</p>
{% endif %}

我的 models.py 以备不时之需:

def view(request):
    Variable = database.objects.all()
    context = {
        'Variable': Variable,
    }
    return render(request, 'app/page.html', context)

编辑: 似乎我一直都有正确的代码,只是一些应用不均的 CSS 使我的表格看起来不像表格。不需要循环标签,只需要 for 循环。添加另一个表格行后看起来也更好:

{% for stuff in Variable %}
<tr>
    <td>{{ stuff.Name|capfirst }}</td>
    <td>{{ stuff.Number|capfirst }}</td>
</tr>
{% endfor %}

【问题讨论】:

  • 我认为您不想在这里使用cycle 标签。它所做的只是在 forloop 迭代时在多个值之间来回切换。文档中的“行”只是在两个类名之间交替,每次 forloop 运行时(即在第一次迭代时,添加row1 作为类名,第二次使用row2,第三次使用row1,在第四个row2等)
  • 你完全正确,我不应该。我拿走了循环标签,创建了另一行,我可以看到我的桌子采取了“形式”。似乎我一直都有,只是一些应用不均匀的 CSS 让它看起来很奇怪。您能否也简单地向我解释一下什么是类名?我假设使用循环,我正在创建自己的变量(row1 和 row2)。总的来说,我对编程和自学非常陌生。
  • 它们只是 CSS 类名(字符串)。因此,当列表中有项目时,文档中的代码将在 class="row1"class="row2" 之间来回切换。
  • 谢谢!这对我来说更有意义了!当我设计表格时,我一定会记住这些信息。再次感谢:)

标签: python django django-templates django-views django-template-filters


【解决方案1】:

对于循环标签,两个参数将交替添加到模板中,例如,模板中的代码{% for o in some_list %}&lt;tr class="{% cycle 'row1' 'row2' %}"&gt;&lt;/tr&gt;{% endfor %}会生成:

<tr class="row1">
    ...
</tr>
<tr class="row2">
    ...
</tr>
<tr class="row1">
    ...
</tr>
<tr class="row2">
    ...
</tr>
<!-- ... and so on while there are elements in some_list -->

等等。通常你会在上面附加一些 css,例如:

<style>
   .row1 {
      background: #345678;
   }
   .row2 {
      background: #123456;
   }
</style>

这会给交替的行提供不同的背景颜色,例如。

【讨论】:

  • 感谢您的澄清。基本上,“row1”和“row2”只是字符串?至少在我提供的示例中?
  • 没错,它们只是字符串 :),它们被设计为用作类名,这样您就可以将一些 CSS 样式附加到这些类,并使替代项彼此突出。例如,使表格更易于阅读。
  • 谢谢!这对我来说现在更有意义了!我希望我可以放弃投票,但需要更多代表哈哈。
  • 没问题,很高兴能提供帮助:)。如果你觉得它有帮助,你可以接受这个答案——这会给我们俩更多的代表:)。
猜你喜欢
  • 2016-02-08
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-20
  • 1970-01-01
相关资源
最近更新 更多