2012-09-09 48 views
1

我不確定我是否發現了一個錯誤,是否讓我的系統配置錯誤,或者只是誤解了Django中的{%cycle%}模板標記。誤解Django中的循環標記

該手冊提供以下示例代碼:

{% cycle 'row1' 'row2' as rowcolors silent %}{# no value here #} 
{% for o in some_list %} 
    <tr class="{% cycle rowcolors %}">{# first value will be "row1" #} 
     ... 
    </tr> 
{% endfor %} 

它清楚地說,在第一週期聲明將輸出什麼,和隨後的呼叫將在第一次迭代。

我有以下問題:首先,第二次調用輸出'row2',這將在第二次調用中預期。其次,隨後的{%cycle rowcolors%}調用也不會輸出任何內容!

我完全誤解了一些東西,或者標籤不能像指定的那樣工作?

+0

在文檔中找不到您的示例代碼(https://docs.djangoproject.com/en/1.4/ref/templates/builtins/#cycle)。你有鏈接嗎? – j0ker

+0

我錯了,我以爲我從文檔中得到了樣本,但它實際上來自代碼本身。第534-539行,在這裏:https://github.com/django/django/blob/master/django/template/defaulttags.py – Brendon

回答

1

據我所知,代碼是循環函數的文檔字符串不同於the actual documentation中的代碼示例。您應該使用{{ rowcolors }}來顯示循環文本。

其次,隨後的{%cycle rowcolors%}調用也不會輸出任何東西!

從文檔:

當無聲關鍵字上的週期定義中使用的,沉默自動適用於循環標記的所有後續使用。在下面的模板中不會輸出任何內容,即使第二次調用{%cycle%}沒有指定無聲:

該段後面的代碼示例看起來與您當前的問題類似。

+0

因此,他們似乎已經更新了文檔字符串,然後他們更新了代碼?我不願意認爲相反的結論是正確的,即文檔字符串中的功能是標籤*使用*的工作方式,因爲文檔字符串行爲更合乎需要。 – Brendon

+0

據我所知,文檔和代碼已更新(以解決https://code.djangoproject.com/ticket/15570),但文檔字符串不是。我在Django bug跟蹤器上提交了一張票(https://code.djangoproject.com/ticket/18933),並提交了一個拉取請求來解決這個問題。 – Martey