发送HTML表单

时间:2015-12-03 12:44:08

标签: python html flask

我想在我的Flask项目中处理一个app route url,但不幸的是我无法设置它,因为HTML form保存了字符串,我需要正确的应用程序路线。

我的目标是:

@app.route('/search-<content-from-the-search-form>')

然而实际上我甚至无法让它工作,(我假设),因为?添加了form。我尝试编辑HTML中的name标记,但它会在搜索到的字符串内容中添加?=,但无法找到我如何删除它们。

现在,点击“搜索”按钮后,一个网址看起来像这样:

/domain.com/?search=content-from-textbox

我想要这样的事情:

/domain.com/search-content-from-textbox

可能有人可以告诉我我做错了什么?我甚至无法弄清楚它是否只是与HTML相关的问题,只需编辑表单就可以解决它,或者它也需要在我的烧瓶配置文件中进行更改?

HTML:

  <form>
          <div class="form-group">
            <input type="search" class="form-control text-center input-lg" id="inputSearch" name="search" placeholder="search">
          </div>
          <br>
          <div class="text-center"><button type="submit" class="btn btn-primary btn-lg">Search!</button></div>
        </form>

2 个答案:

答案 0 :(得分:0)

如果你想从html传递变量,在这种情况下你的表格又回到了烧瓶,你需要做的就是以下

<form action="{{url_for('view_name', variable='search-content-from-textbox-or-some-other-dynamic-data')}}">
   <div class="form-group">
      <input type="search" class="form-control text-center input-lg" id="inputSearch" name="search" placeholder="search">
      </div>
      <br>
      <div class="text-center"><button type="submit" class="btn btn-primary btn-lg">Search!</button></div>
</form>

并在你的烧瓶应用程序中:

@app.route('/search-<variable>')
def view_name():
    # do stuff

正如您所看到的,<variable>对应于您在html代码中传递{{url_for('view_name', variable='search-content-from-textbox-or-some-other-dynamic-data')}}"的变量。因此,无论您在视图路径中使用何种变量名称,都必须匹配您在url_for中传递的变量名称。

我希望有帮助

答案 1 :(得分:0)

我会将这个javascript添加到带有表单的html页面中。

<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
$("#search-form").submit(function(event){
    var value = $('#inputSearch').val();
    $.ajax({
        url: "search-" + value,
        type: "POST",
        success: function(response){
                console.log(response);
        }       
    })
    event.preventDefault();
 });
</script>