Фильтр шаблонов гепардов - PullRequest
       13

Фильтр шаблонов гепардов

1 голос
/ 05 января 2012

Извините, если вопрос звучит наивно.У меня есть шаблон гепарда, например:

#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

Так что, если это сработает, все, что я должен увидеть это1018 * яй

1 Ответ

1 голос
/ 05 января 2012

Чтобы объяснить результаты, которые вы получаете, давайте определим это:

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 будет пространством имен.

Учитывая это, ваш результат все еще вас удивляет?

...