0

次のコンテキスト dict があります。

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

サムがすでに述べたように、それらは辞書ではなくセットです。セットはインデックス作成をサポートしていないため、文字列を追加するだけでは何が何であるかを区別できません。リストまたは実際の辞書を追加できます。

リストを追加する場合:

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 に答える