2012-05-23 27 views
6

Jugando con el frasco y sólo quería imprimir algunos datos con este formato JSON, pero aparece el error:jsonify no está definido - Error interno del servidor

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

Su documentation dice que yo tampoco necesita Python 2.6 o simplejson para ser instalado - Tengo ambos.

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

Respuesta

21

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

Así que tendría que importarlo.
Cambiar el comienzo de la secuencia de comandos a:

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

fantástico, gracias! Y sí, @ThiefMaster es correcto: eso es lo que termina imprimiendo, por ejemplo: {"a": "Test1", "z": "Test2"}. Acabo de iniciar Python: no sabía que así era como se configuraban los documentos, eso tiene sentido ahora. ¿Hay alguna manera de importar una porción más grande de la biblioteca? (Al igual que en Java, puedes importar Java.util. *) Además, acabo de actualizar la página y veo el nuevo comentario de Thiefmaster, pero no vi el punto que hizo otra persona. –

+2

Puede hacer 'desde la importación del matraz *' pero I * altamente * lo recomiendo, ya que hacerlo puede causar todo tipo de errores de espacio de nombres difíciles de depurar. Si tiene una larga lista de importaciones y desea dividir entre varias líneas, puede encerrar entre corchetes/paréntesis, por ejemplo: 'de la importación del matraz (fn1, fn2, fn3)' – bernie

+0

¡Es bueno saberlo! Lo que más me preocupaba era el desorden porque soy un codicioso fanático del código, ¡así que funciona perfecto! –