2012-05-23 10 views
6

Giocando intorno con la boccetta e volevo stampare alcuni dati formattato come in JSON, ma continuo a ricevere l'errore:jsonify non è definito - Internal Server Error

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() 

loro documentation dice che io sia Ho bisogno di Python 2.6 o simplejson per essere installato - Ho entrambi.

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...

risposta

21

jsonify()is a function contained within the flask module.

Quindi è necessario importarlo.
Modifica all'inizio del vostro script:

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

Fantastico, grazie! E sì @ThiefMaster è corretto - questo è esattamente ciò che finisce per stampare ad esempio: {"a": "Test1", "z": "Test2"}. Ho appena avviato Python - non sapevo che fosse così che i documenti erano stati configurati, e ora ha senso. C'è un modo per importare una porzione più ampia della libreria? (Come in Java puoi importare Java.util. *) Inoltre, ho appena aggiornato la pagina e vedo il nuovo commento di Thiefmaster, ma non ho visto il punto che ha fatto qualcun altro. –

+2

Si potrebbe fare 'dall'importazione di una pallina *' ma io * altamente * raccomando di non farlo poiché ciò può causare tutti i tipi di errori di namespace difficili da debugare. Se hai una lunga lista di importazioni e vuoi suddividerle su più righe puoi racchiuderle tra parentesi/parentesi, ad esempio: 'dall'importazione del pallone (fn1, fn2, fn3)' – bernie

+0

Buono a sapersi! Ero principalmente preoccupato per il disordine, dato che sono un maniaco del codice, quindi funziona perfettamente! –