首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >烧瓶和Python:在单击下拉列表中的值时动态打印表

烧瓶和Python:在单击下拉列表中的值时动态打印表
EN

Stack Overflow用户
提问于 2020-07-18 11:23:41
回答 1查看 1.1K关注 0票数 2

我有一个mysql表,在html页面中有一个下拉列表。我想从Myqsl表中根据从下拉菜单中选择的值(现代、Maruthi、丰田、福特)打印选定的行。

我的脚本home.py为:

代码语言:javascript
复制
class Table(db.Model):

 name=db.Column(db.String,primary_key=True)
 color= db.Column(db.String(100))
 Engine=db.Column(db.String(200))
 Adress=db.Column(db.String(200))
 Car_type=db.Column(db.String(200))


@app.route('/Home', methods=["GET", "POST"])
def Home():
 cars = ['Hyundai', 'Maruthi', 'Toyota', 'Ford']
 if request.method=='POST':
    manus=request.form
    return redirect(url_for("newpage.html", classi=manus))
 return render_template("Home.html",   cars=cars)#

@app.route('/newpage/<classi>' )  

def user(classi):
 datas=Table.query.filter_by(Table.Car_type == classi).all()
 return render_template("newpage.html", datas=datas)

我的主页为:

代码语言:javascript
复制
<form method="POST " action="/newpage">
<select name="Cartypes" </p>
<option value="{{cars[0]}}" selected>{{cars[0]}}</option>
{% for t in cars[1:] %}
  <option value="{{t}}">{{t}}</option>
{% endfor %}
</select>

我的newpage.html是:

代码语言:javascript
复制
 {% for row in datas %}
   

    <tr>
   

        <td>{{ row.name }}</td>
        <td>{{ row.color }}</td>
        <td>{{ row.Engine }}</td>
        <td>{{ row.Adress }}</td>
        <td>{{ row.Car_type }}</td>
        

   
    </tr>
{% endfor %}

我得到了以下错误:找不到请求的URL,在服务器上没有找到。如果您手动输入URL,请检查您的拼写,然后重试。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-18 12:28:21

更好的方法是在表单请求中实现GET方法。

其次,如果没有提交类型的按钮,表单将不会自动提交。为了做到这一点,您可以使用javascript。

在你的烧瓶应用程序中:

代码语言:javascript
复制
@app.route('/newpage' )  
def user():
  classi = request.args.get("Cartypes")
  datas=Table.query.filter(Table.Car_type == classi).all()
  return render_template("newpage.html", datas=datas)

在你的home.html里

代码语言:javascript
复制
<form method="GET" action="/newpage">
  <select name="Cartypes" onchange="this.form.submit()">
    <option value="0" selected>Select Model</option>
    {% for t in cars %}
      <option value="{{t}}">{{t}}</option>
    {% endfor %}
  </select>
</form>

在您更改下拉列表后,它会向您的烧瓶服务器发送请求,请求如下:

http://localhost/newpage/?Cartypes=type_here

烧瓶服务器搜索Cartype参数,查询它并将查询集返回到html。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62967967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档