0

我有以下上下文字典:

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>

4

1 回答 1

1

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

如果您附加列表:

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 %}
于 2013-04-28T10:10:54.543 回答