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 模板系统中的变量。你的两次尝试:

{% 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 模板系统中未被识别为有效标签。因此 django 抱怨缺少 endfor,尽管 {% for x in y %) 不是错误。

这应该工作

 {% 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 回答