Фильтр шаблонов гепардов
Извините, если вопрос звучит наивно. У меня есть шаблон гепарда, например:
#filter None
<html>
<body>
$none should be ''
$number should be '1'
</body>
</html>
#end filter
с namespace = {'none': None, 'number': 1}
Поэтому я хочу преобразовать все None и не строковые значения в '' и строку соответственно. Согласно документу Cheetah: http://www.cheetahtemplate.org/docs/users_guide_html_multipage/output.filter.html, мне нужен фильтр по умолчанию. Разве это не то, что я сделал, положив #filter None
в начале? Почему это не работает?
Пожалуйста, помогите мне сделать это правильно. Спасибо
РЕДАКТИРОВАТЬ:
Чтобы было понятнее, в основном я хочу, чтобы это прошло if
тестовое задание:
#filter None
<html>
<body>
#if $none == '' and $number == '1':
<b>yay</b>
#end if
</body>
</html>
#end filter
Так что, если это сработает, все, что я должен увидеть, это ура
1 ответ
Чтобы объяснить результаты, которые вы получаете, давайте определим это:
def filter_to_string(value):
if value is None:
return ''
return str(value)
Давайте представим, что это наш фильтр. Теперь давайте будем наивными о том, как Гепард выполняет обработку (это немного сложнее, чем это). Результат, который вы получите, будет получен из этого:
>>> "<html>\n<body>\n" + \
filter_to_string(ns['none']) + " should be ''\n" + \
filter_to_string(ns['number']) + " should be '1'\n</body>\n</html>\n"
"<html>\n<body>\n should be ''\n1 should be '1'\n</body>\n</html>\n"
где ns
будет пространство имен.
Учитывая это, ваш результат все еще удивляет вас?