Python Flask模板中如何按字典指定字段值进行排序展示
这个需求完全可以实现,有两种常用实现方式:
方案1:后端提前排序(更推荐)
在Flask的视图函数中将数据传给模板前,先调用Python内置的sorted()函数完成排序,符合逻辑与视图分离的开发规范,性能也更好。
示例代码(按sao_primary_app_name升序排序):
# 按应用名称升序排序 db_get_show_application_overview = sorted(db_get_show_application_overview, key=lambda item: item['sao_primary_app_name']) # 如果要按服务器名称排序,修改key即可: # db_get_show_application_overview = sorted(db_get_show_application_overview, key=lambda item: item['sao_physical_server_name']) # 如需降序,添加reverse=True参数: # db_get_show_application_overview = sorted(db_get_show_application_overview, key=lambda item: item['sao_primary_app_name'], reverse=True)
排序完成后再把数据传给模板,原来的模板遍历代码不需要修改。
方案2:直接在Jinja2模板中排序
如果不想修改后端代码,可以直接使用Jinja2内置的sort过滤器完成排序,只需要修改模板中的遍历语句即可。
示例代码(按sao_primary_app_name升序排序):
{% for data in db_get_show_application_overview|sort(attribute='sao_primary_app_name') %} <td> {{ data.sao_application.name }} </td> <td> {{ data.sao_primary_app_name }} </td> <td> {{ data.sao_physical_server_name }} </td> {% endfor %}
- 要按
sao_physical_server_name排序,把attribute的值改为sao_physical_server_name即可 - 如需降序排序,添加
reverse=true参数:sort(attribute='sao_primary_app_name', reverse=true) - 额外提示:你原有代码中直接输出
{{ data.sao_application }}会显示字典对象,要展示应用名需要取name属性,即{{ data.sao_application.name }}
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

