Le rendu d'un python dict en Jinja2 / Werkzeug

Je suis en train de jouer avec un raccourcisseur d'url (en se basant sur le Peu de démonstration d'application de Werkzeug).

J'ai un dict, ce

    ('1', {'target': 'http://10.58.48.103:5000/', 'clicks': '1'})
    ('3', {'target': 'http://slash.org', 'clicks': '4'})
    ('2', {'target': 'http://10.58.48.58:5000/', 'clicks': '1'})
    ('5', {'target': 'http://de.com/a', 'clicks': '0'})

qui est retourné dans url_list et utilisé par render_template

def on_list_urls(self, request):
    url_list = self.get_urls()
    return self.render_template('list_urls.html',
        url_list = url_list
    )

le modèle list_urls est assez simple -

    {% extends "layout.html" %}
    {% block title %}List URLs{% endblock %}
    {% block body %}
      <h2>List URLs</h2>
      <ul id="items">
      {% for item in url_list %}
        <li>{{ item }}</li>
      {% endfor %}
      </ul>

    {% endblock %}

Truc, c'est que je n'arrive pas à accéder aux éléments dans le dict.

La ligne

<li>{{ item }}</li>

est là que je me suis concentrer l'attention. Comme ci-dessus, j'obtiens la liste des clés dans le dict.

<li>{{ item["target"] }}</li>

ne retourne rien. Aucun des
{{ utilisateur.url }}">{{ utilisateur.nom d'utilisateur }}
type de trucs dans les docs semble fonctionner.

Des idées s'il vous plaît? Débutant - être doux. Merci.

Mise à jour

Merci pour les réponses.

Ewan la réponse de travaux, mais utilise une liste de dicts. Je veux passer un dict et un rendu (parce que je veux un non-entier index des articles). Ne Jinja faire?

Aussi - je mal représenté url_list. C'est plus comme ce -

{'a': {'target': 'http://testing.com/test', 'clicks': '0'}, 
'1': {'target': 'http://10.58.48.103:5000/', 'clicks': '1'}, 
'3': {'target': 'http://slash.org', 'clicks': '4'}, 
'2': {'target': 'http://10.58.48.58:5000/', 'clicks': '1'}}

Poursuite de l'expérimentation - le passage d'un dict produit une erreur à propos d'un objet de la liste.

   {% for key in url_list.iteritems() %}

    UndefinedError: 'list object' has no attribute 'iteritems'

Merci encore.

Encore perplexes par pourquoi il pensait que j'était en train de passer d'une liste, mais il a obtenu ce travail maintenant.

{% for key, value in url_list.iteritems() %}
    <li>{{ key }} - {{ value["target"] }} - {{ value["clicks"] }}</li>

imprime tout. Merci beaucoup.

  • Qui ne ressemble pas à une dict à moi...C'est une liste de tuples avec les dicts que le deuxième élément.
InformationsquelleAutor user2839288 | 2013-10-02