2013-08-14 14 views
5

Ich schreibe einen grundlegenden RSS-Feed-Reader in Django. Ich habe ein Formular, in dem ein Benutzer einen RSS Feed eingibt, und ich füge es seiner Feeds-Liste hinzu. Aber aus irgendeinem Grund kann ich mit dem Feed-Parser keine grundlegenden Informationen über den Feed extrahieren.Django rss feedparser gibt einen Feed ohne "Titel" zurück

wenn ich den folgenden Code:

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 wirft mir ein "Objekt hat kein Attribut 'title'" Ausnahme in Zeile 5:

title = feed.title 

Vollfehlerdetails sind:

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' 

Was mache ich falsch?

EDIT: Ich verfolgt das Programm mit pdb. Kurz vor der problematischen Zeile, ich habe:

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

Was gibt 'feedparser.parse (link) .feed' zurück? Sind Sie sicher, dass es sich um ein Model-Objekt oder ein Objekt mit einem Titel attr handelt? –

+1

Bearbeitete den Beitrag, um anzuzeigen, dass der Parser zurückkehrt. – YanivLib

Antwort

0

Es ist eine Weile her, seit ich feedparser verwendet, aber IIRC, der Parser gibt einen Wörterbuch, etwa so:

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

Sie scheinen eine bekommen zu haben Objekt zurück von foo.feed, aber das ist nicht was du willst.

+0

Das scheint auch nicht zu funktionieren. – YanivLib