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''}
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? –
Modifié le post pour afficher le retour de l'analyseur. – YanivLib