Webapp2 Jinja2 Dict列表中的Dict

时间:2013-04-27 23:23:18

标签: python google-app-engine jinja2 webapp2

我有以下背景词:

context={'idp': []}

稍后,我在列表中添加了几个词:

context['idp'].append({'provider','login_url'})
context['idp'].append({'provider','login_url'})
context['idp'].append({'provider','login_url'})

然后以下内容将打印出上面的列表

self.response.write(context['idp'])

现在,我将如何在Jinja2中打印出来?我试过了;

{% for provider, login_url in idp %}

<p><a href="{{ login_url }}">{{ provider }}</a></p>

{% endfor %}

但输出是空白的。 <p><a href=""></a></p>

1 个答案:

答案 0 :(得分:1)

正如萨姆已经提到的那些不是决定,而是集合。集合不支持索引,因此如果您只是添加字符串,则无法区分是什么。您可以附加列表或实际的字典。

如果你附加清单:

context['idp'].append(['provider', 'login_url'])
context['idp'].append(['provider', 'login_url'])
context['idp'].append(['provider', 'login_url'])

然后你可以:

{% for item in idp %}
   <p><a href="{{item[1]}}">{{item[0]}}</a></p>
{% endfor %}

如果你想使用字典,那么:

context['idp'].append({'provider':'google','login_url':'http://example.com/login/google'})
context['idp'].append({'provider':'facebook','login_url':'http://example.com/login/facebook'})
context['idp'].append({'provider':'twitter','login_url':'http://example.com/login/twitter'})

Jinja2模板看起来像这样:

{% for item in idp %}
   <p><a href="{{item['login_url']}}">{{item['provider']}}</a></p>
{% endfor %}