如何在Python中将列表作为变量返回并在Jinja2中使用?
我正在尝试用Python做某事,但我陷入了困境。我在Couchdb中有一个用户列表(使用python benchdb库和Flask框架),这些用户具有用户名(即_id)和电子邮件。我想在jinja2模板的选择框中使用电子邮件地址列表。
我的第一个问题是如何访问电子邮件地址。如果我做:
for user in db: doc = db[user]
emails = doc['email']
print options
我得到:
email@domain.comotheremail@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