You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flask的Jinja2中遍历指定字典获取id、name与abilities

如何在Flask的Jinja2模板中遍历指定字典获取id、name和abilities?

你手上有这样一个字典:

user_dict = { 
    2: {'name': 'e', 'abilities': [] }, 
    3: {'name': 'xyx', 'abilities': []}, 
    1: {'name': 'user', 'abilities': ['can_add', 'can_delete']} 
}

想要在Flask的Jinja2模板里遍历它,拿到每个条目的id(也就是字典的键)、name和abilities?这事儿其实很简单,Jinja2对字典的遍历支持相当友好,我给你一步步拆解:


核心思路

Jinja2中可以通过items()方法遍历字典的键值对,这样就能同时获取到每个条目的id(字典的键)以及对应的详细数据(字典的值)。

完整实现示例

1. Flask视图层传递变量

先在你的Flask视图函数里,把这个字典以变量的形式传给模板:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/users')
def show_users():
    user_dict = { 
        2: {'name': 'e', 'abilities': [] }, 
        3: {'name': 'xyx', 'abilities': []}, 
        1: {'name': 'user', 'abilities': ['can_add', 'can_delete']} 
    }
    # 将字典传给模板,变量名设为user_data
    return render_template('users.html', user_data=user_dict)

2. Jinja2模板遍历渲染

然后在对应的users.html模板里,这样写就能拿到所有需要的字段了:

<!DOCTYPE html>
<html>
<head>
    <title>用户权限列表</title>
</head>
<body>
    <h2>用户信息详情</h2>
    {% for user_id, user_info in user_data.items() %}
        <div style="margin-bottom: 15px; padding: 10px; border: 1px solid #eee;">
            <p><strong>ID:</strong> {{ user_id }}</p>
            <p><strong>用户名:</strong> {{ user_info.name }}</p>
            <p><strong>拥有权限:</strong> 
                {% if user_info.abilities %}
                    <!-- 把权限列表转成逗号分隔的字符串 -->
                    {{ user_info.abilities|join(', ') }}
                {% else %}
                    无任何权限
                {% endif %}
            </p>
        </div>
    {% endfor %}
</body>
</html>

额外优化:控制遍历顺序

如果需要按id从小到大的顺序遍历(比如1→2→3),可以给字典加上dictsort过滤器,模板里的遍历语句改成:

{% for user_id, user_info in user_data|dictsort %}
    <!-- 内部渲染逻辑和上面一致 -->
{% endfor %}

内容的提问来源于stack exchange,提问作者Ghada Adel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:57:24