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

标签 python flask jinja2

我是一个非常年轻的程序员,我想用 Python 做点什么,但我被卡住了。我在 Couchdb 中有一个用户列表(使用 python couchdb 库和 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()

可以使用User类的静态方法load

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.html jinja2 模板中,以下内容将输出每个用户电子邮件的下拉列表框

<select>
{% for user in users %}
    <option value="{{ user.id }}">{{ user.email }}</option>
{% endfor %}
</select>

此外,您使用的是 Flask-CouchDB 扩展吗?它可能有助于抽象出一些低级的 couchdb 编码:http://packages.python.org/Flask-CouchDB/

免责声明:上面的代码未经测试,但应该可以正常工作。我对 CouchDB 了解不多,但我对 Flask 很熟悉。此外,我显然没有在此处包含完整的 Flask/CouchDB 应用程序,因此缺少一些代码。

关于python - 如何在 Python 中将列表作为变量返回并在 Jinja2 中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3970420/

相关文章:

python - 提高 I/O 绑定(bind) tensorflow 训练速度

python - 如何在 django 中使尾部斜杠可选

python - 如何从命令行使用 JSBeautify?

python - 如何在 python flask 的 web 应用程序中定义权限集?

python - Flask APScheduler + Gunicorn worker - 在套接字修复后仍然运行两次任务

javascript - 如何将 Flask 的 JSON 传递给 Javascript

python - 仅在 Flask 应用程序中显示未分类的消息

Python 和 QuickBooks 数据库

javascript - Jinja2 : call function on click

ansible - 我想在Jinja2的Ansible上下文中包含另一个Jinja2模板