Как проверить, существует ли строка в шаблоне?

Я возвращаю строку body_class в свое представление. Кажется, я не могу поставить условие, не нарушив его:

<body tal:condition="body_class" class="${body_class}">
<body tal:condition="not body_class">

Вроде работает. Он выводит класс тела, но остальная часть шаблона не работает. Я ищу решение, которое помещает класс тела, если строка существует, в противном случае оставляет его.

Не знаю, что я делаю неправильно.


person izolate    schedule 20.09.2013    source источник


Ответы (2)


Я полагаю, вы говорите о просмотре в браузере (BorwserView).

Что-то подобное должно работать, если body_class является методом вашего BrowserView:

<body tal:condition="view/body_class" class="${view/body_class}">
...
</body>
<body tal:condition="not: view/body_class">
...
</body>
person Mathias    schedule 20.09.2013
comment
Не думай, что я это использую. В моей функции представлений я return {body_class: 'my class'}, и это то, что я пытаюсь проверить на существование. - person izolate; 20.09.2013
comment
Если возможно, я бы хотел избежать двух экземпляров тега <body>. - person izolate; 20.09.2013

Вы не хотите использовать здесь tal:condition; вы включаете или отключаете элемент целиком, включая содержимое.

Вы только хотите установить атрибут класса:

<body tal:attributes="class: body_class">

Это прекрасно работает для пустых строк, вы просто получите пустой элемент class; если body_class равно None, атрибут будет вообще опущен.

person Martijn Pieters    schedule 20.09.2013