据我所知,没有办法测试一个对象是否是Jinja2中的一个List实例。首先,这是否正确,其次,是否有人在Jinja2中实现了自定义测试/扩展?任何帮助都会很棒。在Jinja2中测试列表
回答
你可以在jinja2中轻松完成自定义过滤器。
首先创建你的测试方法:
def is_list(value):
return isinstance(value, list)
,并将其添加为自定义过滤器:
j = jinja2.Jinja2(app)
j.environment.filters.update({
'is_list': is_list,
})
神社有很多内置的测试。您可能正在寻找iterable。
{% if var is iterable %}
我做了这样的 {% if var is iterable and var is not string %}
在我的情况下'{%if var is string%}'完美地工作;谢谢。 – berto 2017-08-07 13:22:38
在我的设置,我想一个值是字符串或即将进入神社模板字符串列表。所以我真正关心的不是字符串vs列表,而是单个项目与多个项目。如果您的用例类似,这个答案可能会有所帮助。
由于“is list?”没有内置测试吗?也拒绝字符串,我借用了API设计的模式,并将单个对象封装在Python端的列表中,然后在Jinja端检查列表长度。
的Python:
context = { ... }
# ex. value = 'a', or ['a', 'b']
if not isinstance(value, list):
value = [value]
context['foo'] = value
神社:
{% if foo|length == 1 %}
single-item list
{% elif foo|length > 1 %}
multi-item list
{% endif %}
而且如果你想要做的就是添加用于显示目的的项目分隔符,你可以跳过明确的长度检查,只是{{ value|join(', ') }}
。
它看起来像这个答案收到downvote出于某种原因。它对我来说工作正常,但如果有什么不适合你,请随时添加评论。 – 2017-08-22 18:04:37
- 1. JINJA2中的并列列表
- 2. 列表中的Jinja2模板列表
- 3. 测试列表
- 4. Jinja2字典列表到HTML表格中?
- 5. 在RubyMine中恢复测试运行器中的测试列表
- 6. GO中的测试列表
- 7. jinja2:列表中的第一项是否存在列表
- 8. 在Jinja2中,如何测试变量是否未定义?
- 9. jinja2获取属性列表
- 10. 布尔测试在Python中的列表
- 11. 在Visual Studio中导出测试列表
- 12. 测试驱动开发中测试列表的概念
- 13. Symfony - PHPUnit列表测试
- 14. 元素列表测试
- 15. 受损列表测试
- 16. 在列表上测试不等式
- 17. 列表测试名编程在鼻子
- 18. 测试CasperJS中的URL列表
- 19. 如何测试方案中的列表
- 20. Jinja2加入只用于列表
- 21. 如何在Jinja2中对列表进行排序?
- 22. 在jinja2的列表中添加每个字符串的配额?
- 23. jinja2在字典中访问嵌套列表
- 24. webapp2的Jinja2的词典在列表中快译通
- 25. 可以在Jinja2中按长度排序列表吗?
- 26. 如何调试Jinja2模板?
- 27. 如何测试列表a中的所有项目都在列表中b
- 28. 单链表列表的测试用例
- 29. 在功能测试中测试任务队列和管线API
- 30. 如何将测试结果中的测试添加到Visual Studio中的测试列表中?
一个字符串也是可迭代的,所以这将不起作用 – pors 2016-08-11 14:49:37
我也注意到'sequence'测试,但它也认为字符串是一个序列。 – 2017-06-15 13:57:19