潘飞 2009年10月27日 星期二 11:05 | 1857次浏览 | 5条评论
模板标签可以串联工作。比如,标准的{% comment %}标签将隐藏{% endcomment %}之前的内容。
要创建这样的标签,在你的编译函数中使用parse.parse()。
这是标准的{% comment %}的实现:
def do_comment ( parser , token ):
nodelist = parser . parse (( 'endcomment' ,))
parser . delete_first_token ()
return CommentNode ()
class CommentNode ( template . Node ):
def render ( self , context ):
return ''
parse.parse() 接受一个元组的块标签的名字来“直到”。它返回 一个django.template.NodeList的实例
,这个是在它遇到在这个元组里的任何的标签名字之前,解析器遇到的所有Node的列表。
在 nodelist = parser . parse (( 'endcomment' ,)) 中,nodelist是{% comment %}和{% endcomment %}
之间的所有nodes,不包含{% comment %}和{% endcomment %}本身。
当 parse.parse()调用之后,解析器还没有“消费”掉{% endcomment %}标签,所以,代码需要显示地
调用 parser.delete_first_token() 。
Zeuux © 2024
京ICP备05028076号
回复 孙铭阳 2009年10月28日 星期三 01:29