2013-09-29 8 views
0

Ceci est suivi à la question d'ici bozo_exception in Django/feedparserobjet « QuerySet » n'a pas d'attribut « url » lorsque vous utilisez feedparser dans Django

Je voudrais parcourir de nombreux flux de modèles/DB et ont chacun affiché dans le modèle html. Bien que je comprenne que j'ai besoin d'itérer pensée x.feed.entries dans le modèle html, je suppose que l'itération à travers chaque source rss doit se produire dans la fonction de vue correcte?

def feed5(request): 
    source = Feed.objects.all() 
    for item in source.url: 
     rss = feedparser.parse(item) 
    context = {'rss': rss,} 
    return render(request, 'feedreader/feed5.html', context) 

me donne cette erreur: L'objet 'QuerySet' n'a pas d'attribut 'url'. Je ne sais pas comment je devrais y aller?

grâce

Répondre

1

Eh bien, il ne fait pas - Python n'est pas vous mentir. Voir, source est un QuerySet, une structure de liste de résultats, pas un seul résultat. Si c'est votre modèle Feed qui devrait avoir un attribut url, regardez alors il sur le sujet et non l'ensemble de la requête:

for item in source: 
    rss = feedparser.parse(item.url) 
+0

OK, maintenant je cela dans #views 'def feed5 (demande): la source = Feed.objects.all() pour l'élément dans la source: rss = feedparser.parse (item.url) context = {'rss': rss} return render (requête, 'feedreader/feed5.html', contexte) ' ## feed5.html ressemble à ceci '

{{ rss.feed.title }}

    {% pour r dans rss.entries | tranche: "15" %}
  • {{ r.title }}
    {{r.description | StripTags}} {%
  • endfor%} '
mais la page affiche les entrées rss seulement à partir d'une source et ignore ignore tous les autres de DB. Pourquoi? – sikor

+0

Vous ne faites que passer le dernier élément dans le contexte, car c'est la dernière affectation. Ce n'est pas grave que vous irez sur tout. Au lieu de cela, créez les données dans une liste ('li.append (rss)') dans la boucle), passez la liste entière dans le contexte et parcourez les éléments de tous les flux de votre modèle (vous aurez besoin d'imbriqués pour-s). – justinas

+0

J'ai compris, merci! 'def feed5 (demande): source = Feed.objects.all() list = [] pour objet source: rss = feedparser.parse (item.url) list.append (rss) contexte = {'rss': liste} return render (requête, 'feedreader/feed5.html', contexte) ' – sikor

Questions connexes