2017-02-17 15 views
0

私がドキュメントを読んでも、jsonifyがどのように機能するかを理解するのに問題があります。以下に示すように、辞書を返す関数lookup()を呼び出しています。次に、それをjsonifyしようとしています。私helpers.pyFlask - jsonifyを正しく使用する

@app.route("/articles") 
def articles(): 

    a = lookup(33496) 
    return jsonify([link=a["link"], title = a["title"]])  #invalid syntax error 

import feedparser 
import urllib.parse 

def lookup(geo): 
    """Looks up articles for geo."""  #this function already parses the 'link' and 'title' form rss feed 

    # check cache for geo 
    if geo in lookup.cache: 
     return lookup.cache[geo] 

    # get feed from Google 
    feed = feedparser.parse("http://news.google.com/news?geo={}&output=rss".format(urllib.parse.quote(geo, safe=""))) 

    # if no items in feed, get feed from Onion 
    if not feed["items"]: 
     feed = feedparser.parse("http://www.theonion.com/feeds/rss") 

    # cache results 
    lookup.cache[geo] = [{"link": item["link"], "title": item["title"]} for item in feed["items"]] 

    # return results 
    return lookup.cache[geo] 

# initialize cache 
lookup.cache = {} 

私は取得していますエラーが無効な構文です。私が間違ってやっていることにどのようなアイデア?ありがとう

答えて

1

私はあなたのdict構文が間違っていると思います。 official documentationで詳しく読むことができます。

@app.route("/articles") 
def articles(): 
    a = lookup(33496) 
    return jsonify({"link" : a["link"], "title" : a["title"]}) 

具体的にあなたが中括弧の代わりに括弧({})とコロン(:)の代わりに、等号を使用する必要があります。次のように

私はあなたがしようとしていると思うのコードです。

別のオプションは、(他の回答で指摘したように)jsonify()変換を行うにさせることです。

@app.route("/articles") 
def articles(): 
    a = lookup(33496) 
    return jsonify(link = a["link"], title = a["title"]) 

それにもかかわらず、私はあなたがよくdictを作成使用することをお勧めだろうと思います。より大きなJSONオブジェクトを作成する必要がある場合、より柔軟になります。

これが役に立ちます。

+0

jsonifyの目的は何ですか?もしあなたがjsonへの変換を明示的に行う必要があれば? – tadm123

+0

Yea @Jari、問題は私がすでに 'jsonify()'を使って指摘した方法で編集したのですが、構文エラーが出てきます。 – tadm123

+0

私はあなたの最初の例を使ってみましたが、エラーも出てきています。 Hmm – tadm123

1

大括弧は必要ありません。

return jsonify(link=a["link"], title=a["title"]) 
      # ^At this point    ^and this one. 

Read about keyword arguments in python.

+0

私はそれを取り除きましたが、私は同じ無効な構文エラーを受けています – tadm123

+0

私はリンク上を行くでしょう、それは私が間違っているのかもしれません。 – tadm123

関連する問題