问题描述
我正在尝试呈现值列表。在我的实际问题中,每个列表项都有一个 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 (将#修改为@)