3

我想问一下如何使我的网址包含我搜索的内容。像这样的东西:

http://host/filter?test

我的代码:

    @app.route('/filter', methods=['POST', 'GET'])
def filter():
        if request.method == 'POST':
            if str(request.form['search_string']) <> '':
                api.queryMessage(request.form['search_string'])
       return render_template('main.html', search_string=search_string)

还有我的模板 main.html:

<form name="filters" action="{{ url_for('filter') }}" method=post id="filters">
   <div style="position: absolute; top:100px; left:300px">
       <p>Search string: <input type=text size=80 title="Match all of the words"   name=search_string value="{{search_string}}"></p>
       <input type=submit value=Filter/Search onclick=loopSelected();>
       <input type="hidden" name="chosen" id="chosen" value="{{chosen}}" />
   </div>
</form>
4

1 回答 1

6

您现在正在使用 POST 请求。使用 GET 请求,因此浏览器会将您的表单值放入 URL。

在 HTML 表单中设置方法 =“GET”:

<form name="filters" action="{{ url_for('filter') }}" method="GET" id="filters">

您将获得以下形式的 URL:

http://host/filter?search_string=test&chosen=<id>&<some other trash>

在 Flask 中使用 request.args 而不是 request.form:

if request.method == 'GET':
    if request.args.get('search_string'):
        ...
于 2012-07-25T08:52:41.000 回答