У меня есть две области, в которых ваша ошибка исходит от
1) Имя формы устарело с HTML 4 и больше не отправляется, поэтому
if request.form['btn'] == "project":
не будет восприниматься как фляга
Способ обойти это, дать вашей кнопке отправки имя, подобное этому
<button type="submit" name="project" class="btn btn-primary m-b-10 m-l-5" style="display:inline-block" ">Fetch Details</button>
, и в вашем фляге проверьте форму, подобную этой
if 'project' in request.form:
2) Вторая ошибка в этой строке
<form method="POST" action="/ip" name="btn" value="dlvr">
<select id="subsystem_value" onchange="this.form.submit()">
вторая строка здесь должна быть name= "subsystem_value"
, а не id="subsystem_value"
, иначе эта строка в колбе не будет понята
subsystem = request.form['subsystem_value']
Итак, у меня есть этот упрощенный код, который больше не выдает ошибку и возвращает значения так, как я думаю, вы хотите их
в колбе
@app.route('/ip',methods = ['POST', 'GET']) #Used @pp.route to match my testing app
def ip():
if request.method == 'POST':
if 'project' in request.form:
project = request.form['project_name']
return str(project)
else:
subsystem = request.form['subsystem_value']
return str(subsystem)
else:
return render_template('test.html')
в шаблоне
<form action="/ip" method="POST" >
<label>Select Project : </label>
<select class="form-control" style="width: 50%;display:inline-block" name="project_name">
<option></option>
<option value="k">Ki</option>
<option value="s">S</option>
<option value="l">L</option>
</select>
<button type="submit" name="project" class="btn btn-primary m-b-10 m-l-5" style="display:inline-block" ">Fetch Details</button>
</form>
<form name method="POST" action="/ip" >
<select name="subsystem_value" onchange="this.form.submit();">
<option value="test1">t1</option>
<option value="test2">t2</option>
<option value="test3">t3</option>
</select>
</form>
Надеюсь, это поможет вам