我是一个非常年轻的程序员,我正在尝试用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模板中。我想我需要一个功能,但我是一名绿色程序员。
非常感谢帮助。
答案 0 :(得分:18)
答案 1 :(得分:3)
当您调用d
函数(例如)时,将参数作为字典template.renderfunction(d)
传递给jinja模板。因此,您可以这样做:
emails = []
for user in db:
doc = db[user]
emails.append(doc['email'])
some_jinja_template.render({'list_of_emails' : emails})
然后在模板中,您可以执行以下操作:
<ul>
{% for address in list_of_emails %}
<li><a href="mailto:{{ address }}">Send email to {{ address }}</a></li>
{% endfor %}
</ul>
例如,制作电子邮件列表,或按照您的意愿处理它们。
PS - 我确信代码可以通过列表理解或其他方式更优雅/更优化,但我认为我应该强调所谓的“绿色”程序员的可读性。
答案 2 :(得分:1)
lista = [ x for x in db ] # watch out for big databases, you can run out of memory