2012-05-23 21 views
6

Herumspielen mit Flasche und wollte nur ein paar Daten zum Ausdrucken als JSON formatiert, aber ich erhalte immer die Fehlermeldung:jsonify ist nicht definiert - 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() 

Ihre documentation sagt, dass ich entweder brauche Python 2.6 oder simplejson installiert werden - ich habe beide.

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

Antwort

21

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

Sie müssten also importieren.
Ändern Sie den Anfang des Skripts an:

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

Fantastisch, danke! Und yeah @ThiefMaster ist korrekt - das ist genau das, was am Ende gedruckt wird, zB: {"a": "Test1", "z": "Test2"}. Gerade gestartet Python - war mir nicht bewusst, wie die Dokumente eingerichtet wurden, das macht jetzt Sinn. Gibt es eine Möglichkeit, einen größeren Teil der Bibliothek zu importieren? (Wie in Java kannst du Java.util importieren. *) Außerdem - ich habe gerade die Seite aktualisiert und ich sehe Thiefmasters neuen Kommentar, aber ich habe nicht den Punkt gesehen, den jemand anders gemacht hat. –

+2

Sie könnten 'from flask import *' tun, aber ich * empfehle * sehr dagegen, da dies alle Arten von schwer zu debuggenden Namespace-Fehlern verursachen kann. Wenn Sie eine lange Liste von Importen haben und über mehrere Zeilen verteilt werden möchten, können Sie diese in Klammern/Klammern einschließen: 'from flask import (fn1, fn2, fn3)' – bernie

+0

Gut zu wissen! Ich war hauptsächlich mit dem Durcheinander beschäftigt, da ich ein Code-Ordnungsfanatiker bin - so funktioniert das perfekt! –

Verwandte Themen