3

これはうまくいけば、かなり簡単な質問です。私の最終目標は、列見出しを使って並べ替えることができるテーブルのデータベースエントリを表示できることです。私はサイクルタグのdocumentationを読んだことがあるが、彼らは'row1''row2'の意味がわからない:Djangoサイクルタグを使用する方法

{% 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) 

EDIT:それ私は正しいコードを全部持っていたようだが、ちょっと不規則にCSSを適用してテーブルをテーブルのように見せないようにしているようだ。サイクルタグは必要なく、forループのみでした。それはまた、別のテーブルの行追加した後に良好に見えた:サイクルタグの

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

ここで 'cycle'タグを使用したくないと思います。 forループが反復するので、多くの値の間で前後に切り替わります。ドキュメント内の「行」は、2つのクラス名の間で交互に切り替わります。つまり、forloopが実行されるたびに(つまり、最初の繰り返しではclassNameとして 'row1'を、2回目は' row2'に、3回目は 'row1'第4の行2など) – rnevius

+0

あなたは絶対に正しいです、私はすべきではありません。私はサイクルタグを取り除き、別の行を作成しました。そして、私のテーブルが「フォーム」を取るのを見ることができました。私はそれを全部持っていたようだが、ちょっと不均一にCSSを適用して奇妙に見える。クラス名が何であるかを簡単に説明できますか?私はサイクルで仮定しています、私は自分の変数(row1とrow2)を作成しています。私は、一般的なプログラミングや自己指導には非常に新しいです。 – Kervvv

+0

これはCSSクラス名(文字列)です。したがって、ドキュメント内のコードは、リストに項目がある間に 'class =" row1 "と' class = "row2" 'の間を行き来するでしょう。 – rnevius

答えて

4

を、2つの引数がテンプレートに交互に追加され、例えば、テンプレート内のコード{% for o in some_list %}<tr class="{% cycle 'row1' 'row2' %}"></tr>{% 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> 

これは、たとえば、交互に異なる背景色を表示します。

+0

説明をありがとうございます。基本的に 'row1'と 'row2'は単なる文字列ですか?私が提供した例では、少なくとも? – Kervvv

+0

正確には、単に文字列です:)、それらはクラス名として使用されるように設計されているため、これらのクラスにCSSスタイルを付加して、互いの目立つ部分を目立たせることができます。例えば、テーブルを読みやすくする。 – srowland

+0

ありがとうございました!これは私にとって今より多くの意味があります!私はアップフォートを与えることができますが、より多くの担当者を必要としています。 – Kervvv