2013-08-14 2 views
5

Я пишу основной читатель RSS-каналов в Django. У меня есть форма, в которой пользователь отправляет rss-канал, и я добавляю его в свой список каналов. Но по какой-то причине я не могу извлечь основную информацию о фиде, используя синтаксический анализатор корма.Django rss feedparser возвращает фид без «заголовка»

, когда я запускаю следующий код:

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) 

Джанго бросает меня «объект не имеет атрибут„название“» исключение в строке 5:

title = feed.title 

Полная информация об ошибках:

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' 

Что я делаю неправильно?

EDIT: Я проследил программу с помощью pdb. Непосредственно перед проблемной линии, я получил:

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

Что возвращает 'feedparser.parse (link) .feed'? Вы уверены, что это объект модели или любой объект с титульным attr? –

+1

Отредактировано сообщение, чтобы показать, что парсер возвращается. – YanivLib

ответ

0

Это было время, так как я использовал feedparser, но IIRC, анализатор возвращает словарь, например, так:

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

Вы, кажется, получили объект обратно из foo.feed, но это не то, что вы хотите.

+0

Это тоже не работает. – YanivLib

Смежные вопросы