Bottle 不允许我访问表单中的下拉菜单项
Bottle won't let me access drop down menu items in forms
我有一个使用 Bottle 设置的小型网络应用程序。它可以从 POST 表单中读取带有 request.forms.get
的普通文本框,但不能读取带有下拉菜单的 <select>
字段。
HTML 看起来不错这里没有,但如果需要可以 post 连同应用程序代码。
编辑:
@bottle.post('/combat')
def combat():
thing = bottle.request.forms.get('name')
print(bottle.request.forms.get('river'))
print(type(thing),dir(thing),thing)
return("THANKS FOR FIGHTING")
#print("starting server")
bottle.run(host='localhost',port=8080)
和模板:
<html>
<body>
<form action="/combat" method="post">
Choose your attacker:
<select name="attacker">
% for unit in unitlist:
<option value="{{unit}}">{{unit}}</option>
% end
</select>
<p>
Choose your defender:
<select name="defender">
% for unit in unitlist:
<option value="{{unit}}">{{unit}}</option>
% end
</select>
<p>
Location:
<select name="location">
<option value="open">Out in the Open</option><br>
<option value="city">In a City</option><br>
<option value="fort">In a Fort</option>
</select>
<p>
<input type="checkbox" name="river" value="True">On a river<br>
<input type="checkbox" name="fortified" value="True">Fortified<br>
<p>
<input name="name" type="text" />
<input type="submit" value="Submit">
</form>
</body>
</html>
我可以 post 它呈现的内容,如果有帮助的话?
确保正在处理已发布数据的视图接受 POST 请求并且 select 字段应包含正确的 name:
from bottle import get, post, request # or route
@get('/form') # or @route('/form')
def form():
return '''
<form action="/example" method="post">
Select: <select name="example">
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<input value="Submit" type="submit" />
</form>
'''
@post('/example') # or @route('/example', method='POST')
def example():
select_field_data = request.forms.get('example')
...
所以这似乎是一场虚惊 - 现在它正在工作,我并没有太大改变!不确定问题是什么,除了现在打开调试模式并摆弄显示 bottle.forms.get
!
的代码之外
希望我没有浪费大家的时间...
我有一个使用 Bottle 设置的小型网络应用程序。它可以从 POST 表单中读取带有 request.forms.get
的普通文本框,但不能读取带有下拉菜单的 <select>
字段。
HTML 看起来不错这里没有,但如果需要可以 post 连同应用程序代码。
编辑:
@bottle.post('/combat')
def combat():
thing = bottle.request.forms.get('name')
print(bottle.request.forms.get('river'))
print(type(thing),dir(thing),thing)
return("THANKS FOR FIGHTING")
#print("starting server")
bottle.run(host='localhost',port=8080)
和模板:
<html>
<body>
<form action="/combat" method="post">
Choose your attacker:
<select name="attacker">
% for unit in unitlist:
<option value="{{unit}}">{{unit}}</option>
% end
</select>
<p>
Choose your defender:
<select name="defender">
% for unit in unitlist:
<option value="{{unit}}">{{unit}}</option>
% end
</select>
<p>
Location:
<select name="location">
<option value="open">Out in the Open</option><br>
<option value="city">In a City</option><br>
<option value="fort">In a Fort</option>
</select>
<p>
<input type="checkbox" name="river" value="True">On a river<br>
<input type="checkbox" name="fortified" value="True">Fortified<br>
<p>
<input name="name" type="text" />
<input type="submit" value="Submit">
</form>
</body>
</html>
我可以 post 它呈现的内容,如果有帮助的话?
确保正在处理已发布数据的视图接受 POST 请求并且 select 字段应包含正确的 name:
from bottle import get, post, request # or route
@get('/form') # or @route('/form')
def form():
return '''
<form action="/example" method="post">
Select: <select name="example">
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<input value="Submit" type="submit" />
</form>
'''
@post('/example') # or @route('/example', method='POST')
def example():
select_field_data = request.forms.get('example')
...
所以这似乎是一场虚惊 - 现在它正在工作,我并没有太大改变!不确定问题是什么,除了现在打开调试模式并摆弄显示 bottle.forms.get
!
希望我没有浪费大家的时间...