【问题标题】:How to display contents of a dictionary into web page using Flask如何使用 Flask 将字典的内容显示到网页中
【发布时间】:2017-05-24 10:34:13
【问题描述】:

我遇到了无法将字典内容显示到网页中的问题。

 web_indiv[url_sequence] = {'url' : converted_url , 'name' : x.name, 'count' : web_count_current }

    return render_template('video.html', web_data = web_indiv)

web_indiv 使用循环填充,然后作为 web_data 传递给 video.html。

示例字典

{1: {'url': 'http://www.drpeppersnapplegroup.com/', 'name': 'Dr. Pepper-Snapple Group', 'count': 57}, 2: {'url': 'http://www.rccolainternational.com/', 'name': 'Royal Crown Cola', 'count': 41}}

注意:它是一个字典,其中包含另一个字典。

这是我的 html 文件中已有的内容。

{% for key1,line in web_data.items() %}
     {% for key2,line_item in line.items() %}
     <tr>
        <td class="col-md-2">{{ line_item['url'] }}</td>
        <td class="col-md-2">{{ line_item['name'] }}</td>
        <td class="col-md-2">{{ line_item['count'] }}</td>
    </tr>
     {% endfor %}
{% endfor %}

数据不会显示在网页上。

感谢您花时间阅读我的查询。

【问题讨论】:

    标签: python dictionary flask jinja2


    【解决方案1】:

    如果它只是一个字典,你可以试试这个:

    <html>
    {{web_data[url_sequence]}}
    <table>
        <tr>
            {%for value in web_data[url_sequence].values()%}
              <td class="col-md-2">{{ value }}</td>
            {% endfor %}
        </tr>
    </table>
    </html>
    

    注意web_data[url_sequence] 是一个字典。

    这个会有订单(网址,名称,然后计数):

    <tr>
        <td class="col-md-2">{{ web_data[url_sequence].url }}</td>
        <td class="col-md-2">{{ web_data[url_sequence].name }}</td>
        <td class="col-md-2">{{ web_data[url_sequence].count }}</td>
    </tr>
    

    实例:

    假设你有字典web_indiv,那么你想把它渲染到模板video.html

    @app.route('/', methods=['GET'])
    def root():
        web_indiv = {}
        url_sequence = 'test'
        web_indiv[url_sequence] = {'url':'testabc','name':'hello','count': 4}
        return render_template('video.html', web_data = web_indiv, url_sequence = url_sequence)
    

    然后你可以像这样在模板中使用字典:

    <tr>
        <td class="col-md-2">{{ web_data[url_sequence].url }}</td>
        <td class="col-md-2">{{ web_data[url_sequence].name }}</td>
        <td class="col-md-2">{{ web_data[url_sequence].count }}</td>
    </tr>
    

    html 会告诉你:

    testabc hello 4
    

    【讨论】:

    • 非常感谢您的回复。但是我是否也必须将 url_sequence 的值传递给 html?
    • @JeremyCenteno 您可以参考真实示例(已在答案中更新),让您了解如何在模板中使用 dict。
    • @JeremyCenteno 如您所见,您必须将变量 url_sequence 传递给模板,这样字典才能工作。
    • 嗨。如果说 url_sequence 是一个整数,并且每次用新数据填充字典时,它的值都会增加一个,我是否应该在我的 html 中也有一个循环(使用 Jinja2)会增加,以便我可以遍历整个字典?
    • 不需要在模板中这样做,模板接收数据并呈现它,您可以在后端进行,并通过匹配键url_sequence传递字典。
    【解决方案2】:
     {% for key2,line_item in web_data[url_sequence].items %}
         <tr>
            <td class="col-md-2">{{ line_item }}</td>
        </tr>
     {% endfor %}
    

    【讨论】:

    • 您好,感谢您的评论。但是 Jinja2 抛出了一个 UndefinedError。顺便说一句,我忘了包括循环产生的字典样本。在撰写本文时,已添加示例字典。
    • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。 - From Review
    猜你喜欢
    • 2019-01-08
    • 2020-12-25
    • 2019-07-02
    • 1970-01-01
    • 2016-11-01
    • 2012-10-16
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    相关资源
    最近更新 更多