2013-08-14 4 views
5

J'écris un lecteur de flux RSS de base dans Django. J'ai un formulaire dans lequel un utilisateur soumet un flux rss, et je l'ajoute à sa liste de flux. Mais pour une raison quelconque, je suis incapable d'extraire des informations de base sur le flux en utilisant l'analyseur de flux.Django rss feedparser renvoie un flux sans "titre"

quand je lance le code suivant:

def form_valid(self, form): 
    user = self.request.user 
    link = form.cleaned_data['link'] 
    feed = feedparser.parse(link).feed 
    title = feed.title 
    try: 
     feed_obj = Feed.objects.get(link=link) 
    except ObjectDoesNotExist: 
     feed_obj = Feed(link=link, title=title) 
     feed_obj.save() 
    user.get_profile().feeds.add(feed_obj) 
    return super(DashboardView, self).form_valid(form) 

Django me lève une exception "objet n'a pas d'attribut 'title'" sur la ligne 5:

title = feed.title 

détails d'erreur complets sont:

Traceback: 
File "/home/yaniv/nextfeed/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
    115.       response = callback(request, *callback_args, **callback_kwargs) 
File "/home/yaniv/nextfeed/venv/local/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view 
    25.     return view_func(request, *args, **kwargs) 
File "/home/yaniv/nextfeed/venv/local/lib/python2.7/site-packages/django/views/generic/base.py" in view 
    68.    return self.dispatch(request, *args, **kwargs) 
File "/home/yaniv/nextfeed/venv/local/lib/python2.7/site-packages/django/views/generic/base.py" in dispatch 
    86.   return handler(request, *args, **kwargs) 
File "/home/yaniv/nextfeed/venv/local/lib/python2.7/site-packages/django/views/generic/edit.py" in post 
    165.    return self.form_valid(form) 
File "/home/yaniv/nextfeed/profiles/views.py" in form_valid 
    48.   title = feed.title 
File "/home/yaniv/nextfeed/venv/local/lib/python2.7/site-packages/feedparser.py" in __getattr__ 
    416.    raise AttributeError, "object has no attribute '%s'" % key 

Exception Type: AttributeError at /dashboard 
Exception Value: object has no attribute 'title' 

Qu'est-ce que je fais mal?

EDIT: J'ai tracé le programme avec pdb. Juste avant la ligne problématique, je suis arrivé:

(Pdb) link 
u'http://feedparser.org/docs/examples/rss20.xml' 
(Pdb) feed 
{'xhtml_script': {'type': u'text/javascript', 'language': u'javascript'}, 'summary': u''} 
+0

Qu'est-ce qui retourne 'feedparser.parse (link) .feed'? Êtes-vous sûr qu'il s'agit d'un objet modèle ou d'un objet avec un titre attr? –

+1

Modifié le post pour afficher le retour de l'analyseur. – YanivLib

Répondre

0

Il a été un moment que je feedparser, mais IIRC, l'analyseur retourne un dictionnaire, comme ceci:

foo = feedparser.parse(link) 
feed = foo['feed'] 
title = feed['title'] 

Vous semblez avoir obtenu un objet de retour de foo.feed, mais ce n'est pas ce que vous voulez.

+0

Cela ne semble pas fonctionner non plus. – YanivLib