我在模板中显示嵌套块时遇到问题。
例如。
{% 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'”错误。
有什么想法吗?
答案 0 :(得分: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 %}
答案 1 :(得分:0)
我认为你不能为方法使用参数。您必须修改类别对象,以便可以使用:
{% for product in category.products %}
答案 2 :(得分: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
。
您必须编写自己的标记,其中包含过滤或重新考虑问题的参数。