2013-08-14 6 views
5

私は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''} 
+0

'feedparser.parse(link).feed'は何を返していますか?これはモデルオブジェクト、またはtitle attrを持つ任意のオブジェクトであると確信していますか? –

+1

投稿を編集して、パーサーが返ってくることを示しました。 – YanivLib

答えて

0

私はfeedparserを使用しますが、IIRCは、パーサはそのように、辞書を返すので、それはしばらくしている:

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

あなたが得ているように見えますfoo.feedから戻ってくるオブジェクトですが、それはあなたが望むものではありません。

+0

それはどちらもうまくいかないようです。 – YanivLib

関連する問題