如何在jinja2模板中打印MongoDB列表?

时间:2013-07-10 15:50:47

标签: python jinja2

我在MongoDB集合中有'affect'字段,用于存储值列表。看起来像这样:

{
    "_id" : ObjectId("51dc89712ef6af45b0a5f286"),
    "affects" : [
        "GS",
        "WEB",
        "DB",
        "CB",
        "ALL",
        "OTHER"
    ],
}

在模板(html页面)中我这样做:

{% for change in changes %}
{{ change._id }}
{{ change.affects }}
{% endfor %}

当您的字段只有一个值时,这非常有效,例如_id将在我的HTML页面中以这样的方式输出:

51dc89712ef6af45b0a5f286

当有多个值时,输出结果如下:

[u'GS', u'WEB', u'DB', u'CB', u'ALL', u'OTHER']

jinja2中是否有一种方法可以迭代值列表并将它们打印出来而不带括号,引号和u?

谢谢。

2 个答案:

答案 0 :(得分:4)

你可能需要在Jinja中使用嵌套循环,试试这个:

{% for change in changes %}
    {{ change._id }}
    {% for affect in change.affects %} 
        {{ affect }}
    {% endfor %}
{% endfor %}

答案 1 :(得分:1)

我遇到类似的问题,我的修复...... 烧瓶app.py

@app.route('/mongo', methods=['GET', 'POST'])
def mongo():

    # connect to database
    db = client.blog

    # specify the collections name
    posts = db.posts

    # convert the mongodb object to a list
    data = list(posts.find())

    return render_template('mongo_index.html', blog_info=data)

然后你的jinja模板可能看起来像这样...... mongo_index.hmtl

{% for i in blog_info %}
    {{ i['url'] }}
    {{ i['post'] }}
{% endfor %}

从mongodb返回的初始对象看起来像这样......

[{u'category': u'python', u'status': u'published', u'title': u'working with python', u'url': u'working-with-python', u'date': u'April 2012', u'post': u'some blog post...', u'_id': ObjectId('553b719efec0c5546ed01dab')}]

我花了一段时间才弄清楚,我想如果它看起来像一个列表,它实际上并不意味着它是一个。 :)