Django rss feedparser возвращает ленту без заголовка

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

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

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 выдает мне исключение «объект не имеет атрибута title» в строке 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'

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

РЕДАКТИРОВАТЬ: я проследил программу с помощью pdb. Прямо перед проблемной строкой я получил:

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

person YanivLib    schedule 14.08.2013    source источник
comment
Что возвращает feedparser.parse(link).feed? Вы уверены, что это объект модели или любой другой объект с атрибутом title?   -  person Maxime Lorant    schedule 14.08.2013
comment
Отредактировал сообщение, чтобы показать, что возвращает парсер.   -  person YanivLib    schedule 14.08.2013


Ответы (1)


Прошло некоторое время с тех пор, как я использовал feedparser, но IIRC, парсер возвращает словарь, например:

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

Похоже, вы получили объект из foo.feed, но это не то, что вам нужно.

person Aaron Beals    schedule 14.08.2013