将值从HTML下拉列表发送到flask app.route

时间:2019-08-16 12:13:37

标签: python html flask

我想将值从HTML的下拉框中传递给我的flask路由。下拉菜单的选定值应在URL中: 127.0.0.1:5000/switchselect/zone=be(或类似的东西)

@app.route('/switchselect/<zone>', methods= ['GET', 'POST'])
@login_required
def switchselect(zone):
    if request.method == 'POST':
        zone=request.form[zone]
        return "zone: " + zone
    else:
        return redirect(url_for('index'))

在HTML中,我有:


<div class="dropdown" style="padding-top:25px">
<button class="btn btn-default dropdown-toggle" type="button" id="menu1" data-toggle="dropdown">BE  <span class="caret"></span></button>
<ul class="dropdown-menu" role="menu" aria-labelledby="menu1">
<li role="presentation"><a role="menuitem" tabindex="-1" href="{{ url_for('switchselect')}}">Actual Config</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="#">Archive</a></li>
</ul>
</div>

我试图用这种方式解决它,因为我想为页面/ switchselect /创建一个模板,而与区域无关。

那么,如何将下拉列表中所选值的值传递给烧瓶中的路线?

如果我有任何错误,请原谅我,我是Python和Flask的新手。

1 个答案:

答案 0 :(得分:1)

您可以从a标记中使用的url_for传递它

url_for('route_name', variable_name=variable_value)

在您的模板中

<a role="menuitem" tabindex="-1" href="{{ url_for('switchselect', zone='be')}}">Actual Config</a>

将区域值更改为要传递的值。

在下拉菜单中单击链接时,方法为GET

@app.route('/switchselect/<zone>', methods= ['GET', 'POST'])
@login_required
def switchselect(zone):
        return "zone: " + zone 

如果区域变量不存在,这将为您提供404。您可以提供默认参数并重定向到索引。

@app.route('/switchselect/', defaults={'zone': None})
@app.route('/switchselect/<zone>', methods=['GET', 'POST'])
@login_required
def switchselect(zone):
    if zone:
        return "zone: " + zone
    return redirect(url_for('index'))