首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Flask中的Jinja2获取嵌套的字典项

使用Flask中的Jinja2获取嵌套的字典项
EN

Stack Overflow用户
提问于 2014-07-14 07:53:46
回答 2查看 35.6K关注 0票数 15

对于使用此Flask控制器的此字典

代码语言:javascript
复制
projects = {
        'life-calc':{'url':'life-calc',
                    'title': 'Life Calculator'},
        'text-game':{'url':'text-game',
                    'title':'Text Adventure'},
        'fill-it-up':{'url':'fill-it-up',
                    'title':'Fill It Up'},
        'rock-paper-scissors':{'url':'rock-paper-scissors',
                    'title':'Rock, Paper, Scissors'},
        'bubble-popper':{'url':'bubble-popper',
                    'title':'Bubble Popper'}
            }


@app.route('/')
def index():
    return render_template("index.html",
                            projects = projects)

和模板本身

代码语言:javascript
复制
    <h1>
        List of My Projects
    </h1>

    <ol>
        <li>
            <a href = "life-calc">Life Calculator</a>
        </li>
        <li>
            <a href = "text-game">Adventure Game</a>
        </li>
        <li>
            <a href = "fill-it-up">Fill It Up</a>
        </li>
        <li>
            <a href = "rock-paper-scissors">Rock Paper Scissors</a>
        </li>
        <li>
            <a href = "bubble-popper">Bubble Popper</a>
        </li>
    </ol>
    <p>test section below</p>
    <ol>
        {% for project in projects %}
        <li><a href = "{{ project['url'] }}">{{ project['title'] }}</a> </li>
        {% endfor %}
    </ol>

{% endblock %}

如何访问字典中的项以打印我的项目列表,就像在测试上面的HTML中一样?

我在Rendering a python dict in Jinja2 / Werkzeug的帮助下解决了自己的问题,模板块应该是

代码语言:javascript
复制
{% for key, value in projects.iteritems() %}
<li><a href={{value['url']}}>{{value['title']}}</a></li>
{% endfor %}

但我仍然很好奇如何访问更多的嵌套字典,以及这是否是创建简单菜单的最聪明的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-14 15:20:43

我想您想知道如何访问模板中的嵌套字典

如果你认为我明白你的问题

通常,这是访问字典中嵌套字典项的方式。

如果迭代进一步嵌套,那么您必须增加forloop深度级别,无论是list还是dict。

在这里,我只是以我自己的方式给出一个通用的例子,以便于您理解

数据:

代码语言:javascript
复制
parent_dict = {1: {'A':'val1','B':'val2'}, 2:{'C':'val3','D':'val4'}}

Jinja2中的迭代:

代码语言:javascript
复制
{% for key,parent_dict_item in parent_dict.items() %}
   {% for key2, nested_value in parent_dict_item.items() %}
      <li><a href = "{{ nested_value }}">{{ nested_value }}</a> </li>
   {% endfor %}
{% endfor %}

答案:

代码语言:javascript
复制
<li><a href="val1">val1</a> </li>
<li><a href="val2">val2</a> </li>
<li><a href="val3">val3</a> </li>
<li><a href="val4">val4</a> </li>
票数 23
EN

Stack Overflow用户

发布于 2015-12-03 18:13:07

除了在循环中展开键和值之外,您还可以使用键在dict本身中引用项:

代码语言:javascript
复制
{% for project in projects %}
  <li><a href = "{{ projects[project].url }}">{{ projects[project].title }}</a> </li>
{% endfor %}
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24727977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档