1

テンプレートでネストされたブロックを表示する際に問題があります。

例えば。

   {% for category in categories %}

         //code to display category info 

         {% products = products.object.filter(category = category) %}
         {% for product in products%}
              //code to display product info
         {% endfor %}
   {% endfor %}

「無効なブロック タグ: 'endfor'」というエラーが表示されます。

何か案は?

4

3 に答える 3

1

Django テンプレート システムの変数に代入することはできません。あなたの2つの試み:

{% products = products.object.filter(category = category) %}

{% products = category.get_products %}

どちらも無効な Django 構文です。

一部の Python テンプレート システムは PHP に似ており、Python コードを HTML ファイルに埋め込むことができます。Django はこのようには機能しません。Django は独自の簡略化された構文を定義しており、その構文には代入が含まれていません。

あなたはこれを行うことができます:

{% for category in categories %}

     //code to display category info 
     {% for product in category.get_products %}
          //code to display product info
     {% endfor %}
{% endfor %}
于 2010-07-16T12:38:55.457 に答える
0
{% products = products.object.filter(category = category) %}

は、django テンプレート システムで有効なタグとして認識されません。したがって、{% for x in y %) はエラーではありませんが、django は endfor の欠落について不平を言います。

これはうまくいくはずです

 {% for category in categories %}
     {% for product in products.object.all %}
         //code to display product info
     {% endfor %}
 {% endfor %}

しかし、これはあなたが達成したいことではありません。product.objects単純に、引数でフィルタリングすることはできませんcategory

フィルタリングで引数を取る独自のタグを作成するか、問題を再考する必要があります。

于 2010-07-16T11:25:13.640 に答える
0

メソッドに引数を使用することはできないと思います。使用できるように、カテゴリ オブジェクトを変更する必要があります。

{% for product in category.products %}
于 2010-07-16T11:19:50.437 に答える