【问题标题】:Bottle won't let me access drop down menu items in formsBottle 不允许我访问表单中的下拉菜单项
【发布时间】:2017-02-20 17:33:50
【问题描述】:

我有一个使用 Bottle 设置的小型网络应用。它可以从 POST 表单中读取带有 request.forms.get 的普通文本框,但不能读取带有下拉菜单的 <select> 字段。

HTML 看起来不错,这里没有它,但如果需要,可以与应用代码一起发布。

编辑:

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

如果有帮助,我可以发布它呈现的内容?

【问题讨论】:

  • 请包含您目前编写的代码。您提供的详细信息越多,您可能收到的答案就越多。检查FAQHow to ask
  • 已完成 - 也感谢格式化帮助!

标签: python web-applications bottle


【解决方案1】:

确保处理已发布数据的视图接受 POST 请求,并且选择字段应包含正确的名称

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

【讨论】:

  • 我想我已经做到了 - 已经用代码更新了问题。但是,我注意到您在 request.forms.get 中使用了 'select' 而不是 'example' - 我应该这样做吗?
【解决方案2】:

所以这似乎是一个虚惊——它现在正在工作,而且我没有太大变化!不知道问题是什么,除了现在打开了调试模式并摆弄了显示bottle.forms.get的代码!

希望我没有浪费人们的时间......

【讨论】:

    猜你喜欢
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    相关资源
    最近更新 更多