Vous n'êtes pas identifié(e).
Hello,
Je continue toujours dans mes listes.
J'avais le code suivant :
def person_list(request):
personlist = Person.objects.all()
feed_contents = []
for person in personlist:
myfeed = feedparser.parse(person.syndication)
i = 0
while i < 10:
feed_link = myfeed.entries[i].link
feed_title = myfeed.entries[i].title
feed_contents.append([feed_link, feed_title])
i = i + 1
return object_list(request, queryset=personlist,
template_name='home/person_list.html', allow_empty = 'True',
extra_context={'feed_contents': feed_contents, })
qui fonctionne bien à ceci près que feed_contents aggrege l'ensemble des
contenus des flux et du coup, je suis pas capable de restituer le contenu
par flux.
Je me suis donc dit : "qu'à cela ne tienne, on va faire une liste un niveau
au dessus" pour avoir une liste par flux parsé, et chaque liste qui
contiendra elle-même une liste contenant ses flux.
J'ai donc fait (ajout de la liste pipo) :
def person_list(request):
personlist = Person.objects.all()
pipo = []
for person in personlist:
feed = feedparser.parse(person.syndication)
i = 0
feed_contents = []
while i < 10:
feed_link = feed.entries[i].link
feed_title = feed.entries[i].title
feed_contents.append([feed_link, feed_title],)
i = i + 1
pipo.append([feed_contents])
return object_list(request, queryset=personlist,
template_name='home/person_list.html', allow_empty = 'True',
extra_context={'feed_contents': feed_contents, 'pipo': pipo })
et dans mon template, je suis passé de :
{% for feed_content in feed_contents %}
{% comment %} feed_content is a list with numeral index. "0" is
URL and "1" is title {% endcomment %}
<li><a href="{{ feed_content.0 }}">{{ feed_content.1 }}</a></li>
{% endfor %}
à :
{% for pipe in pipo %}
{% for pipa in pipe %}
{% for feed_content in pipa %}
{% comment %} feed_content is a list with
numeral index. "0" is URL and "1" is title {% endcomment %}
<li><a href="{{ feed_content.0 }}">{{
feed_content.1 }}</a></li>
{% endfor %}
{% endfor %}
{% endfor %}
mais j'obtiens le même résultat et là, je comprends pas où ça coince. Ma
dernière hypothèse serait que la liste pipo n'est pas une nouvelle liste
mais une simple copie de feed_contents, mais c'est de la pure supposition...
Vous en pensez quoi ?
Merci d'avance,
Nico
Hors ligne
Bon, en fait, j'ai réglé ça dans le train. A priori, au niveau template,
c'est les vues génériques qui m'ont mis dans la mouise (ou que j'ai pas su
maniupuler correctement).
Du coup, pour la vue, ça donne ceci :
<
http://chaudron.unelectronlibre.info/browser/sites/lessteinmetz/www/home/views.py
>
et pour le template :
<
http://chaudron.unelectronlibre.info/browser/sites/lessteinmetz/www/templates/home/homepage.html
>
Si malgré tout qqn veut voir pour rendre ça "plus propre", je suis preneur
d'améliorations :-)
Le 05/04/07, Nicolas Steinmetz <nsteinmetz _AT_ gmail.com> a écrit :
>
> Hello,
>
> Je continue toujours dans mes listes.
>
> J'avais le code suivant :
>
> def person_list(request):
> personlist = Person.objects.all()
> feed_contents = []
> for person in personlist:
>
> myfeed = feedparser.parse(person.syndication)
> i = 0
> while i < 10:
> feed_link = myfeed.entries[i].link
> feed_title = myfeed.entries[i].title
> feed_contents.append([feed_link, feed_title])
>
> i = i + 1
> return object_list(request, queryset=personlist, template_name='home/person_list.html', allow_empty = 'True', extra_context={'feed_contents': feed_contents, })
>
>
> qui fonctionne bien à ceci près que feed_contents aggrege l'ensemble des
> contenus des flux et du coup, je suis pas capable de restituer le contenu
> par flux.
>
> Je me suis donc dit : "qu'à cela ne tienne, on va faire une liste un
> niveau au dessus" pour avoir une liste par flux parsé, et chaque liste qui
> contiendra elle-même une liste contenant ses flux.
>
> J'ai donc fait (ajout de la liste pipo) :
>
> def person_list(request):
> personlist = Person.objects.all()
> pipo = []
> for person in personlist:
> feed = feedparser.parse(person.syndication )
> i = 0
> feed_contents = []
> while i < 10:
> feed_link = feed.entries[i].link
> feed_title = feed.entries[i].title
> feed_contents.append([feed_link, feed_title],)
> i = i + 1
> pipo.append([feed_contents])
> return object_list(request, queryset=personlist,
> template_name='home/person_list.html', allow_empty = 'True',
> extra_context={'feed_contents': feed_contents, 'pipo': pipo })
>
> et dans mon template, je suis passé de :
>
> {% for feed_content in feed_contents %}
> {% comment %} feed_content is a list with numeral index. "0" is URL and "1" is title {% endcomment %}
>
> <li><a href="{{ feed_content.0 }}">{{ feed_content.1 }}</a></li>
> {% endfor %}
>
> à :
>
> {% for pipe in pipo %}
> {% for pipa in pipe %}
> {% for feed_content in pipa %}
> {% comment %} feed_content is a list with
> numeral index. "0" is URL and "1" is title {% endcomment %}
> <li><a href="{{ feed_content.0 }}">{{
> feed_content.1 }}</a></li>
> {% endfor %}
> {% endfor %}
> {% endfor %}
>
> mais j'obtiens le même résultat et là, je comprends pas où ça coince. Ma
> dernière hypothèse serait que la liste pipo n'est pas une nouvelle liste
> mais une simple copie de feed_contents, mais c'est de la pure supposition...
>
>
> Vous en pensez quoi ?
>
> Merci d'avance,
> Nico
>
>
Hors ligne
Le 05/04/07, Nicolas Steinmetz<nsteinmetz _AT_ clever-age.com> a écrit :
> Bon, en fait, j'ai réglé ça dans le train. A priori, au niveau template,
> c'est les vues génériques qui m'ont mis dans la mouise (ou que j'ai pas su
> maniupuler correctement).
>
> Du coup, pour la vue, ça donne ceci :
> <http://chaudron.unelectronlibre.info/browser/sites/lessteinmetz/www/home/views.py>
> et pour le template :
> <
> http://chaudron.unelectronlibre.info/browser/sites/lessteinmetz/www/templates/home/homepage.html>
>
> Si malgré tout qqn veut voir pour rendre ça "plus propre", je suis preneur
> d'améliorations :-)
Ouch, ouch, ouch le while :-)
feed_content = [(entry.link, entry.title) for entry in feed.entries[:10]]
Ça devrait passer.
Bonne journée,
David
Hors ligne
Le 05/04/07, David Larlet <larlet _AT_ gmail.com> a écrit :
>
>
> Ouch, ouch, ouch le while :-)
Surtout que si y a moins de 10 entrées, Django remonte une jolie erreur :-)
feed_content = [(entry.link, entry.title) for entry in feed.entries[:10]]
Je regarde ça ce soir dans le RER :-D
++
Nico
Hors ligne