2017-04-17 148 views
0

我有一个使用MySQL的Flask后端,需要从表格中拉出值以显示在下拉列表中。从MySQL数据库填充下拉列表Python

我有像香蕉,苹果,橘子等

我里面的html代码单值的表,该选项显示了如果用户选择另一个下拉菜单(这是硬编码),使代码看起来像这样:

$(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(); 
      } 

在我的烧瓶应用:

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

在哪里添加代码,使我从/ getFruits获取值放入HTML中的选项?

回答

1

您可以将上下文数据(水果列表)传递到模板的javascript代码,使用JSON将满足您的要求:

您的看法:

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

您的模板:

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

谢谢你,如果我有两个下拉菜单?如果我在my_view中有data1和data2? – user1883614

+0

@ user1883614它将类似,只需添加一个变量,并在'render_template('yourtemplate.html',data1 = json.dumps(data1),data2 = json.dumps(data2))''后传递变量在你的模板中,你可以分别为循环data1和data2,并将相应的变量分配到两个下拉列表中。 –

+0

基本上,您可以使用给定的上下文(模板上下文中应该可用的变量)呈现模板,请参阅[Template Rendering](http://flask.pocoo.org/docs/0.12/api /)。你可以将多个变量传递给模板,只要确保你的变量可以被javascript“理解”。 –