私はDjangoに基本的なRSSフィードリーダーを書いています。私はユーザーがrssフィードを提出し、彼のフィードリストに追加するフォームを持っています。しかし何らかの理由で、フィードパーサーを使用してフィードに関する基本情報を抽出できません。Django rss feedparserが「タイトル」のないフィードを返します
私は、次のコードを実行すると:
title = feed.title
フル・エラーの詳細は次のとおりです:
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は5行目で例外 "オブジェクトが 'タイトル' を何の属性を持っていない" 私をスローします
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''}
'feedparser.parse(link).feed'は何を返していますか?これはモデルオブジェクト、またはtitle attrを持つ任意のオブジェクトであると確信していますか? –
投稿を編集して、パーサーが返ってくることを示しました。 – YanivLib