我有一个mysql表,在html页面中有一个下拉列表。我想从Myqsl表中根据从下拉菜单中选择的值(现代、Maruthi、丰田、福特)打印选定的行。
我的脚本home.py为:
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)我的主页为:
<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是:
{% 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,请检查您的拼写,然后重试。
发布于 2020-07-18 12:28:21
更好的方法是在表单请求中实现GET方法。
其次,如果没有提交类型的按钮,表单将不会自动提交。为了做到这一点,您可以使用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里
<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。
https://stackoverflow.com/questions/62967967
复制相似问题