1

我的 MongoDB 集合中有“影响”字段,用于存储值列表。看起来像这样:

{
    "_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 的情况下将它们打印出来?

谢谢你。

4

2 回答 2

4

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

{% for change in changes %}
    {{ change._id }}
    {% for affect in change.affects %} 
        {{ affect }}
    {% endfor %}
{% endfor %}
于 2013-07-10T15:59:50.800 回答
1

我遇到了类似的问题,我的修复... flask 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')}]

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

于 2015-04-26T12:23:21.243 回答