我正在尝试用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>