2016-04-19 11 views
1

Ich habe ein Ergebnis an Javascript in JSON übergeben. Aber wenn ich var myList = {{ pass_tmp|tojson|safe }} verwende, um das Ergebnis in json umzuwandeln, gibt es einen Fehler, der besagt, dass TypeError: ObjectId('') is not JSON serializable. Ich habe diese Frage TypeError: ObjectId('') is not JSON serializable gelesen. Aber die Situation in dieser Frage ist ein wenig anders als mine.Ich muss dies zu JSON in einer Flasche Vorlage anstelle einer Python-Datei konvertieren.Und ich muss den Befehl var myList = {{ pass_tmp|tojson|safe }} verwenden, um dies aus HTML zu übergeben zu Javascript. So frage ich mich, ob ich ObjectId zu String konvertieren kann? Hier ist meine Flasche App-Code:Wie konvertiert man ObjectId in Python in String?

@app.route('/details/', methods=['GET']) 
def details(): 
    if request.method == 'GET': 
     mongoClient = pymongo.MongoClient('localhost', 27017) 
     name = session['name'] 
     print name 
     db = mongoClient[name] 
     results = db[name].find() 
     json_results= [] 
     for result in results: 
      json_results.append(result) 
     # json_tmp = toJson(json_results) 
     return render_template('details.html', pass_tmp=json_results) 

Hier ist meine Vorlage (Javascript-Code):

var myList = {{ pass_tmp|tojson|safe }} 
     // Builds the HTML Table out of myList json data from Ivy restful service. 
     function buildHtmlTable() { 
      var columns = addAllColumnHeaders(myList); 

      for (var i = 0 ; i < myList.length ; i++) { 
       var row$ = $('<tr/>'); 
       for (var colIndex = 0 ; colIndex < columns.length ; colIndex++) { 
        var cellValue = myList[i][columns[colIndex]]; 

        if (cellValue == null) { cellValue = ""; } 

        row$.append($('<td/>').html(cellValue)); 
       } 
       $("#excelDataTable").append(row$); 
      } 
     } 

So hat jemand gute Vorschläge hat, dieses Problem zu lösen?

+0

http://stackoverflow.com/questions/23902596/how-to-use-flask-jsonify-and-render-a-template -in-a-flash-route Nur versuchen. Ich bin nicht zuversichtlich. –

+0

Ich habe dieses Problem gelöst, indem Sie einfach JSON an die Vorlage übergeben ~~~ Danke für Ihre Hilfe trotzdem –

+0

Ihre Begrüßung. :) –

Antwort

0

Ich habe dieses Problem gelöst, indem Sie einfach JSON anstelle der Ergebnisse an die Vorlage übergeben.

@app.route('/details/', methods=['GET']) 
def details(): 
    if request.method == 'GET': 
     mongoClient = pymongo.MongoClient('localhost', 27017) 
     name = session['name'] 
     print name 
     db = mongoClient[name] 
     results = db[name].find() 
     json_results= [] 
     for result in results: 
      json_results.append(result) 
     json_tmp = toJson(json_results) 
     return render_template('details.html', pass_tmp=json_tmp) 

Und dies in Vorlage: var myList = {{ pass_tmp|safe }} statt var myList = {{pass_tmp|tojson|safe}}

Verwandte Themen