2013-08-14 18 views
5

Piszę podstawowy czytnik kanałów RSS w Django. Mam formularz, w którym użytkownik przesyła kanał RSS i dodaję go do jego listy kanałów. Ale z jakiegoś powodu nie mogę wyodrębnić podstawowych informacji o pliku danych za pomocą analizatora plików danych.Django rss feedparser zwraca kanał bez "tytułu"

kiedy uruchomić następujący kod:

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 rzuca mi "obiekt ma atrybut 'tytuł'" wyjątek na linię 5:

title = feed.title 

Pełne informacje o błędach:

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' 

Co robię źle?

EDYCJA: Śledziłem program za pomocą pdb. Tuż przed problematycznej linii, mam:

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

Co wraca 'feedparser.parse (link) .feed'? Czy na pewno jest to obiekt modelu lub dowolny obiekt z attraktatem tytułowym? –

+1

Edytował post, aby pokazać, że parser powraca. – YanivLib

Odpowiedz

0

Minęło trochę czasu odkąd wykorzystywane feedparser, ale IIRC, parser zwraca słownika, tak:

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

Wydaje się zdobyć obiekt z powrotem z foo.feed, ale to nie jest to, czego chcesz.

+0

To też nie działa. – YanivLib