2010-07-16 9 views
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 ».

Любые идеи?

+1

«блок» имеет определенное значение в языке шаблона Джанго, и это не так. –

+0

@ Игнасио Васкес-Абрамс прав, что вы имеете в виду под «тегом»: http://docs.djangoproject.com/en/1.2/topics/templates/#tags –

+2

Является '{% products = products.object.filter (category = category)%} 'legal в шаблонах Django? –

ответ

0

Я думаю, вы не можете использовать аргументы для методов. Вы должны изменить объект ваших категорий, так что вы Канна использование:

{% for product in category.products %} 
0
{% products = products.object.filter(category = category) %} 

не признаются в качестве действительного тега в системе шаблона Джанго. Поэтому 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.

Вы должны написать свой собственный тег, который принимает аргументы в отношении фильтрации или переосмысления вашей проблемы.

+0

Я отфильтровывал фильтрацию в методе внутри категорий: например, category.get_products, поэтому теперь мой внутренний цикл читает: {% products = category.get_products%} {% для продукта в продуктах%} // код для отображения информации о продукте {% endfor%} Все еще получаешь ту же ошибку? – Philip

1

Вы не можете назначать переменные в системе шаблонов Django. Ваши две попытки:

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

и

{% products = category.get_products %} 

являются недействительными синтаксис Джанго.

Некоторые системы шаблонов 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 %} 

 Смежные вопросы

  • Нет связанных вопросов^_^