如何解决Mustache (pystache) 在列表中命名上下文
我正在尝试呈现值列表。在我的实际问题中,每个列表项都有一个 name
属性,还有另一个列表,其中的项也有一个 'name' 属性。我试图避免在我的上下文中重命名嵌套列表项。
我做了一些测试,我发现这很完美:
template = '''
{{#my_list}}
My list name is: {{my_list.name}}
{{/my_list}}
'''
context = {'my_list' : {'name': 'This is my first item'}}
renderer = pystache.Renderer(missing_tags='strict')
s = renderer.render(template,context)
print(s)
输出是你所期望的:
My list name is: This is my first item
但是,如果 my_list
实际上是一个列表(就像在我的实际问题中一样),这会中断:
context = {'my_list' : [
{'name': 'This is my first item'},{'name': 'This is my second item'}
]}
我得到一个 pystache.context.KeyNotFoundError: Key 'my_list.name' not found: missing 'name'
。
我的目标是尝试解决这个问题:
template = '''
{{#my_list}}
{{#sublist}}
{{name}} from {{name}}
{{/sublist}}
{{/my_list}}
'''
context = {'my_list' : [
{'name': 'list first item','sublist' : [
{'name': 'sublist first item'},{'name': 'sublist second item'}
]},{'name': 'list second item',{'name': 'sublist second item'}
]}
]}
我想要这个渲染:
sublist first item from list first item
sublist second item from list first item
sublist first item from list second item
sublist second item from list second item
但我得到了这个:
sublist first item from sublist first item
sublist second item from sublist second item
list second item from list second item
list second item from list second item
我认为使用带有命名元素的模板可以解决我的问题:
template = '''
{{#my_list}}
{{#sublist}}
{{sublist.name}} from {{my_list.name}}
{{/sublist}}
{{/my_list}}
'''
Handlebars 有一个 solution,但它不适用于 Mustache。
编辑:
我也试过 Chevron,它不起作用。
编辑 2:
我设法调整了上下文和模板以“使其工作”:
template = '''
{{#my_list}}
{{#my_list_item.sublist}}
{{name}} from {{my_list_item.name}}
{{/my_list_item.sublist}}
{{/my_list}}
'''
context = {'my_list' : [
{ 'my_list_item' :
{'name': 'list first item','sublist' : [
{'name': 'sublist first item'},{'name': 'sublist second item'}
]
}
},{ 'my_list_item' :
{'name': 'list second item',{'name': 'sublist second item'}
]
}
}
]}
非常感谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。