2017-04-17 2 views
0

Ich habe ein Flask Backend mit MySQL und muss Werte aus einer Tabelle ziehen, um sie in einem Dropdown anzuzeigen.Popup Dropdown von MySQL Datenbank Python

ich eine Tabelle mit Werten, wie Bananen haben, Apfel, Orange, usw.

In meinem HTML-Code zeigt die Option, wenn ein Benutzer eine andere Dropdown wählt Aussehen so dass der Code (die hartcodiert ist) wie folgt aus:

$(function() { 
     $("#inputType").change(function() { 
      var myform = "<div id=\"newForm\">" 
      +"<label for=\"inputFruit\">Fruit:</label>" 
      +"<select class=\"form-control\" id=\"inputFruit\" required>" 
      +"<option></option>" 
      +"</select>" 
      if ($("#inputType").val() == "fruits") { 
       $(myform).insertBefore("#btnSignUp"); 
      } else { 
       $("#newForm").remove(); 
      } 

in meinem Kolben App:

@app.route('/getFruits') # gets my fruits as a list and returns 

Wo füge ich Code, so dass die Werte, die ich von/getFruits gelangen in die Option im HTML gesetzt wird?

Antwort

1

Sie können die Kontextdaten (Obst Liste) in Javascript-Code der Vorlage übergeben, verwenden JSON wird Ihre Anforderung erfüllen:

Ihre Ansicht:

import json 

@app.route('/getFruits') 
def my_view(): 
    data = ['Banana', 'Apple', 'Orange', 'Pear', 'Watermalon'] # you can get list from your DB instead 
    return render_template('yourtemplate.html', data=json.dumps(data)) 

Ihre Vorlage:

$(function() { 
     $("#inputType").change(function() { 
      var myform = "<div id=\"newForm\">" 
      +"<label for=\"inputFruit\">Fruit:</label>" 
      +"<select class=\"form-control\" id=\"inputFruit\" required>" 
      {% for item in data %} 
      +"<option>{{ item|safe }}</option>" 
      {% endfor %} 
      +"</select>" 
      if ($("#inputType").val() == "fruits") { 
       $(myform).insertBefore("#btnSignUp"); 
      } else { 
       $("#newForm").remove(); 
      } 
+0

Danke für das, was ist, wenn ich zwei Dropdowns habe? Wenn ich innerhalb von my_view ein data1 und ein data2 hätte? – user1883614

+0

@ user1883614 Es wird ähnlich sein, nur eine weitere Variable hinzufügen, und übergeben Sie die Variable in der 'render_template (' yourtemplate.html ', data1 = json.dumps (data1), data2 = json.dumps (data2)) ', nach In Ihrer Vorlage können Sie data1 und data2 getrennt schleifen und die Variablen in zwei Dropdown-Listen zuordnen. –

+0

Grundsätzlich können Sie eine Vorlage mit dem gegebenen Kontext rendern (die Variablen, die im Kontext der Vorlage verfügbar sein sollten), siehe [Template Rendering] (http://flask.pooco.org/docs/0.12/api /). Sie können mehrere Variablen an eine Vorlage übergeben, stellen Sie jedoch sicher, dass Ihre Variable von JavaScript "verstanden" werden kann. –

Verwandte Themen