我想在我的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>
答案 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>