2012-05-23 5 views
6

フラスコで遊んとJSONのフォーマットとしてだけでいくつかのデータをプリントアウトしたかったが、私はエラーを取得しておいてください。jsonifyが定義されていない - 内部サーバーエラー

NameError: global name 'jsonify' is not defined

from flask import Flask 
from flask import json 
app = Flask(__name__) 

@app.route("/") 
def testJSON(): 
     x = "Test1" 
     y = "Test2" 
     return jsonify(a=x,z=y) 

if __name__ == "__main__": 
     app.debug = True 
     app.run() 

を彼らのdocumentationが、その私はどちらかと言いますPython 2.6またはsimplejsonがインストールされている必要があります - 私は両方を持っています。

のPython 2.7.3:

sys.version '2.7.3 (default, May 9 2012, 23:42:16) \n[GCC 4.4.3]'

のsimplejson:

[email protected]:~/PythonScripts# pip install simplejson Requirement already satisfied (use --upgrade to upgrade): simplejson in /usr/local/lib/python2.7/site-packages Cleaning up...

答えて

21

jsonify()is a function contained within the flask module

だから、インポートする必要があります。
変更するには、スクリプトの先頭:

from flask import jsonify # <- `jsonify` instead of `json` 
+0

ファンタスティック、ありがとう!そして、ええ@ThiefMasterは正解です - それは、例えば "{" a ":" Test1 "、" z ":" Test2 "}のように印刷されたものです。ちょうどPythonを始めたばかりです - それは、ドキュメントがどのように設定されたかを認識していませんでした。ライブラリの大部分をインポートする方法はありますか? (JavaのようにJava.util。*をインポートすることもできます)また、ページをリフレッシュしてThiefmasterの新しいコメントが表示されますが、他の誰かが作成した点はわかりませんでした。 –

+2

あなたは 'from flask import *'を行うことができますが、そうすることを強くお勧めします。そうすることで、すべての種類の難しい名前空間エラーが発生する可能性があるからです。長いリストのインポートがあり、複数の行に分割したい場合は、大括弧/括弧で囲むことができます(例:from flask imported(fn1、fn2、fn3)) – bernie

+0

私はコードがきちんとしたフリークなので、主にクラッタに関心がありました - それで完璧に動作します! –

関連する問題