如何在Python中将列表作为变量返回并在Jinja2中使用?

我正在尝试用Python做某事,但我陷入了困境。我在Couchdb中有一个用户列表(使用python benchdb库和Flask框架),这些用户具有用户名(即_id)和电子邮件。我想在jinja2模板的选择框中使用电子邮件地址列表。

我的第一个问题是如何访问电子邮件地址。如果我做:

for user in db:

doc = db[user]

emails = doc['email']

print options

我得到:

email@domain.com

otheremail@otherdomain.com

yetanotheremail@yetanotherdomain.com

这样我就可以获得我的电子邮件列表。但是我残酷的经验不足之处在于我不知道该如何使用它们。该列表仅存在于for循环中。如何将该列表作为可用变量列表返回?然后,如何在我的jinja2模板的选项下拉列表中显示该列表。

回答:

假设你有一个模型,例如:

class User(Document):

email = TextField()

你可以使用loadUser类的静态方法

users = [User.load(db, uid) for uid in db]

现在你可以执行以下操作:

for user in users:

print user.id, user.email

但是你在flask中使用它,因此,在你的视图中,可以使用以下方式将此用户列表发送到模板:

from flask import render_template

@app.route("/users")

def show_users():

users = [User.load(db, uid) for uid in db]

return render_template('users.html', users=users)

现在,在users.htmljinja2模板中,以下内容将输出每个用户电子邮件的下拉列表框

<select>

{% for user in users %}

<option value="{{ user.id }}">{{ user.email }}</option>

{% endfor %}

</select>

以上是 如何在Python中将列表作为变量返回并在Jinja2中使用? 的全部内容, 来源链接: utcz.com/qa/419154.html

回到顶部