2012-01-04 136 views
1

對不起,如果問題聽起來天真。我有一個獵豹模板,e.g:獵豹模板過濾器

#filter None 
<html> 
<body> 
$none should be '' 
$number should be '1' 
</body> 
</html> 
#end filter 

namespace = {'none': None, 'number': 1}
所以基本上我想所有的無和非字符串值「」和字符串分別將。根據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 

所以,如果它的作品了所有我應該看到的是

+0

但是...你得到的結果是什麼? – 2012-01-04 23:14:40

+0

@RicardoCárdenes我得到的是$ none == None和$ number == 1.不是字符串 – BPm 2012-01-04 23:23:50

+0

我只是運行你的例子,得到'應該''和'1'應該是'1',這就是我' d期望。我認爲你想要'''應該''和'''應該是'1'? – 2012-01-04 23:28:03

回答

1

要解釋你得到的結果,讓我們定義這個:

def filter_to_string(value): 
    if value is None: 
     return '' 
    return str(value) 

讓我們想象那是我們的過濾器。現在,讓我們對於Cheetah如何處理這個問題來說是天真的(它比這個更復雜一點)。你得到將來自這樣的結果:

>>> "<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將命名空間。

鑑於此,您的結果是否令您驚訝?

+0

是啊,我現在明白了。謝謝 – BPm 2012-01-04 23:56:15