2016-03-24 4 views
0

Bitte bare mit mir für die Neuigkeit in diesem. Ich versuche, eine Datenbank über meine Website abzufragen und Spalten mit den Ergebnissen mithilfe von Jinja-Vorlagen dynamisch hinzuzufügen. Ich bin mit Kolben und auf meine Ansichten Funktion, die ich bin Rendern der Werte wie dieseRender_template zweite Zeit nach der Seite ist bereits geladen

return render_template('query.html',my_list=my_list)

Die Sache ist die, dass, wenn ich die Seite laden, der Benutzer die Datenbank noch Abfrage hat, so my_list leer ist. Der Benutzer fragt die Datenbank ab, indem er einen Knopf auf der HTML-Seite drückt und eine AJAX-Anfrage durch jQuery macht. Meine Frage ist jetzt, ob es möglich ist, my_list unter Verwendung von jinja Templates zurückzugeben, auch nachdem die Seite bereits geladen wurde, was bedeutet, dass ich render_template ein zweites Mal zurückgeben muss (nach dem Senden), um die Werte für my_list zu erhalten. Ich bevorzuge es, json Parsing zu verwenden. Vielen Dank im Voraus!

Hier ist ein Beispielcode. Ich frage die Datenbank mit den Werten der IntranetID der Spalte SubmitterID und der Plattform der Spalte Plattformen ab, um den gesamten Eintrag mit den Werten der übrigen Spalten in die Datenbank zurückzugeben.

@app.route('/querydbvalues',methods=['POST', 'GET']) 
def querydbvalues(): 
    if request.method == 'POST' or request.method == 'GET': 
    results = models.mydatabase.query.filter_by(SubmitterID=qIntranetID,Platforms=qPlatform).all() 
    my_list = [i.user for i in results] 
    return render_template('query.html',my_list=my_list) 

und auf meine HTML-Seite

{% for n in my_list %} 
<li>{{n}}</li> 
{% endfor %} 

auf der Javascript-Datei, wenn Sie die Taste i die Ajax-Anforderung wie diese eine völlig getrennte Anfrage

$("#SearchDatabase").click(function(){ 
    var tmp = document.getElementById("qIntranetID").value; 
    var tmp2 = document.getElementById("qPlatform").value; 
    jQuery.ajax({ 
     dataType: "json", 
     url:"/querydbvalues", //tell the script where to send requests 
     data:{text:tmp,text2:tmp2}, 
     type:'GET', 
     contentType: 'application/json', 
     success: function(results){ 
      //do something 
     } 
    }); 
}); 
+0

Sie müssen die Anforderungsmethode nicht überprüfen. Flask leitet nur GET- und POST-Anfragen an diesen Endpunkt weiter. – dirn

Antwort

0

Der Ajax Anruf drücken ist . Sie können in dieser Anfrage das tun, was Sie möchten, einschließlich der Render-Vorlagen.

+0

Hallo, vielen Dank für Ihre Eingabe. Mein Problem ist jedoch, dass ich "my_list" auf derselben HTML-Seite rendern möchte, ohne sie zu aktualisieren oder auf eine andere Seite zu wechseln. Und aus irgendeinem Grund kann ich nicht und deshalb ich um Hilfe gebeten – PetrosM

+0

Nun, das ist, was Ajax tut. Sie sollten vielleicht erklären * warum * Sie haben Probleme beim Rendern der gleichen Seite, anstatt zu sagen "aus irgendeinem Grund kann ich nicht". –

+0

Ich habe kein Problem beim Rendern der gleichen Seite. Ich habe Probleme, den Wert auf "my_list" (das zweite Argument, das ich nach der HTML-Seite darlege) zu rendern und diese Werte mit der jinja-Vorlage auf meiner Webseite zu verwenden. – PetrosM

Verwandte Themen