Django rss feedparser返回没有“title”的feed [英] Django rss feedparser returns a feed with no "title"

查看:270
本文介绍了Django rss feedparser返回没有“title”的feed的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在Django写一个基本的RSS feed阅读器。我有一个用户提交RSS订阅的表单,并将其添加到其Feed列表中。但是由于某种原因,我无法使用feed解析器提取有关Feed的基本信息。



当我运行以下代码:

  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)
除了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给我一个对象没有属性标题第5行例外:

  title = feed.title 

完整的错误详细信息是:

 追溯:
文件 /home/yaniv/nextfeed/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py在get_response
115. response = callback(request,* callback_args,** callback_kwargs)
文件/home/yaniv/nextfeed/venv/local/lib/python2.7/site-packages/django/ _wrapped_view
中的contrib / auth / decorators.py 25.返回view_func(request,* args,** kwargs)
文件/home/yaniv/nextfeed/venv/local/lib/python2.7 /site/package/generic/base.py
68. return self.dispatch(request,* args,** kwargs)
文件/ home / yaniv / nextfeed /在调度
86. return handler(request,* args,** kwargs)
文件中的varv / local / lib / python2.7 / site-packages / django / views / generic / base.py /home/yaniv/nextfeed/venv/local/lib/python2.7/site-packages/django/views/generic/edit.py在帖子
165. return self.form_valid(form)
form_valid
中的文件/home/yaniv/nextfeed/profiles/views.py48. title = feed.title
文件/home/yaniv/nextfeed/venv/local/lib/python2.7 /站点包/ FE edparser.py__getattr__
416. raise AttributeError对象没有属性'%s'%key

异常类型:/ dashboard $ AttributeError
异常值:对象没有属性'title'

我做错了什么?



编辑:我用pdb跟踪程序。在有问题的行之前,我得到:

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


解决方案

我使用feedparser,但是IIRC,解析器返回一个字典,如下所示:

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

你似乎已经从foo.feed中获取了一个对象,但这不是你想要的。


I'm writing a basic RSS feed reader in Django. I have a form in which a user submits a rss feed, and I add it to his feeds list. But for some reason, I'm unable to extract basic information about the feed using feed parser.

when i run the following 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 throws me an "object has no attribute 'title'" exception on line 5:

title = feed.title

Full error details are:

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'

What am I doing wrong?

EDIT: I traced the program with pdb. Right before the problematic line, I got:

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

解决方案

It's been a while since I used feedparser, but IIRC, the parser returns a dictionary, like so:

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

You seem to have gotten an object back from foo.feed, but that's not what you want.

这篇关于Django rss feedparser返回没有“title”的feed的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆