如何在Django模板中去除dict_keys()并以逗号分隔显示?
解决模板中dict_keys()标识去除及逗号分隔展示问题
核心原因
直接在模板中输出dict.keys或dict.values时,模板引擎会打印该对象的原生字符串表示(即带dict_keys()的格式),而非直接输出键/值的列表内容。
解决方案(针对Jinja2/Flask模板)
利用模板的过滤器先将dict_keys对象转换为列表,再用join过滤器实现逗号分隔:
修改后的模板代码
<h1>Accessing values</h1> <p>{{ final_metrics.values() | list | join(', ') }}</p> <p>{{ final_metrics.data.0.13.browser.Chrome }}</p> <h1>{{ final_metrics.month }} Clicks Statistics</h1> <p>Short Url: {{ final_metrics.short_url }}</p> <p>Date Accessed: {{ final_metrics.data.0.keys() | list | join(', ') }}</p> <p>Browser: {{ final_metrics.data.0.13.browser.keys() | list | join(', ') }}</p> <p>Platform: {{ final_metrics.data.0.13.platform.keys() | list | join(', ') }}</p>
关键修改点
- 对所有
.keys/.values的调用,添加()(确保调用方法返回键/值视图) - 用
| list过滤器将视图对象转换为可遍历的列表 - 用
| join(', ')过滤器将列表元素以逗号+空格分隔输出
若使用Django模板
语法略有差异,无需加()调用方法,直接使用:
<p>Date Accessed: {{ final_metrics.data.0.keys | list | join:', ' }}</p>
为什么之前的方案无效?
你参考的方案是Python代码层面的处理(如list(dict.keys())),但当前需求是在模板中直接处理输出,需使用对应模板引擎的过滤器语法,而非Python原生代码逻辑。
内容的提问来源于stack exchange,提问作者shuberman
相关产品推荐
相关产品推荐

