Django:{%cycle%}有问题

Django:{%cycle%}有问题,django,django-templates,cycle,rounded-corners,Django,Django Templates,Cycle,Rounded Corners,这直接取自我的Django模板: {% for day in days %} <!-- {% cycle 'day' 'day' 'day last' as cls %} --> {% rounded "black" cls %} {# Custom tag giving me rounded borders. #} ... {% endrounded %} {% endfor %} {%为天中的天%} {%rounded“black”cls%}{{#自定义标记给我

这直接取自我的Django模板:

{% for day in days %}
  <!-- {% cycle 'day' 'day' 'day last' as cls %} -->
  {% rounded "black" cls %} {# Custom tag giving me rounded borders. #}
  ...
  {% endrounded %}
{% endfor %}
{%为天中的天%}
{%rounded“black”cls%}{{#自定义标记给我圆角边框。#}
...
{%endrounded%}
{%endfor%}

我已经注释掉了
{%cycle%}
,因为我只使用它在循环中每隔三次迭代将“
cls
”设置为“
day last
”。有没有更好的方法在不向视图添加任何代码的情况下执行此操作?(人们说逻辑不应该出现在模板中,但反过来则更糟。)

应用程序逻辑不应该出现在模板中。表示逻辑确实属于那里(看起来就是这样)。我会把它放在那里

应用程序逻辑不应该在模板中。表示逻辑确实属于那里(看起来就是这样)。我会把它放在那里

我不太明白您为什么会有问题,因为您当前的解决方案似乎有效。我认为您不需要HTML注释,因为
{%cycle%}
一起作为
不会输出任何内容,但除此之外,它似乎还可以

但是,如果您需要另一种方法,可以使用
divisibleby
过滤器:

{% for day in days %}
  {% if forloop.counter|divisibleby:3 %}
     {% rounded "black" "day last" %}
  {% else %}
     {% rounded "black" "day" %}
  {% endif %}
{% endfor %}

但我不认为这比您已经拥有的更好。

我不确定我是否理解您为什么会有问题,因为您当前的解决方案似乎有效。我认为您不需要HTML注释,因为
{%cycle%}
一起作为
不会输出任何内容,但除此之外,它似乎还可以

但是,如果您需要另一种方法,可以使用
divisibleby
过滤器:

{% for day in days %}
  {% if forloop.counter|divisibleby:3 %}
     {% rounded "black" "day last" %}
  {% else %}
     {% rounded "black" "day" %}
  {% endif %}
{% endfor %}

但是我不认为这比你已经拥有的更好。

嗯……这就是
循环
标签的作用。我不知道你为什么要逃避,但你应该知道:

  • 任何需要选择性应用某些规则的逻辑都需要python代码,因为模板代码不分配给变量
  • python代码必须从templatetag或view函数逻辑调用

  • 因此,如果不使用视图逻辑,就只能使用templatetags。要么自己写,要么使用内置的<代码>循环
    似乎和其他任何循环一样简单。有什么问题。

    嗯……这就是
    循环
    标签的作用。我不知道你为什么要逃避,但你应该知道:

  • 任何需要选择性应用某些规则的逻辑都需要python代码,因为模板代码不分配给变量
  • python代码必须从templatetag或view函数逻辑调用

  • 因此,如果不使用视图逻辑,就只能使用templatetags。要么自己写,要么使用内置的<代码>循环
    似乎和其他任何循环一样简单。有什么问题。

    'Django开发版本中的新增功能'

    循环“as”标记现在具有“静默”模式:


    'Django开发版本中的新版本'

    循环“as”标记现在具有“静默”模式:


    但问题(可能不清楚)是:如果不在HTML注释中使用{%cycle%}而不将其放入视图中,我如何做同样的事情?但问题(可能不清楚)是:如果不在HTML注释中使用{%cycle%}而不将其放入视图中,我如何做同样的事情?
    {%cycle%}
    使用
    作为输出,这是我通常不会想到的,但是是的。。。我将采用您的解决方案。您应该更新您的答案,因为“使用as循环不会输出任何内容”的语句是不正确的。这就是定义循环时“静默”选项的要点<代码>{%cycle%}
    使用
    作为它的输出,这是我通常不会想到的,但是是的。。。我将采用您的解决方案。您应该更新您的答案,因为“使用as循环不会输出任何内容”的语句是不正确的。这就是定义循环时“静默”选项的要点。问题是,
    {%cycle%}
    被替换为它的结果,这就是为什么我不得不使用HTML注释来隐藏结果。换句话说,这是一个愚蠢的黑客行为,它将在生成的HTML源代码中大放异彩。正如Roseman指出的,还有另一种方法可以完成同样的事情。问题是,
    {%cycle%}
    被替换为它的结果,这就是为什么我不得不使用HTML注释来隐藏结果。换句话说,这是一个愚蠢的黑客行为,它将在生成的HTML源代码中大放异彩。正如罗斯曼指出的,还有另一种方法可以完成同样的事情。