【问题标题】:keeping forms data in url with flask使用烧瓶将表单数据保存在 url
【发布时间】:2014-01-02 15:15:48
【问题描述】:

尽管查看了使用 Flask 构建 URL 的方法,但我无法找到将表单数据保存在 url 中的方法。

这段代码运行良好:

@app.route('/', methods=['GET'])
def index():
    res = '''<form action="/search" method=post>
                    <p><input type="text" name="query" value="test"></p>
                    <p><input type="submit" value="Search"></p>
                    <br />
    </form>'''
    return res

@app.route('/search', methods=['POST'])
def search():
    return request.form['query']

但是结果显示在myapp.com/search我想要类似myapp.com/search?query=toto的东西

我想我一定错过了一些非常基本的东西......有什么提示吗?

提前致谢

【问题讨论】:

  • 也许是method=get ?
  • 谢谢,我试过了,还是不行……

标签: python forms url flask


【解决方案1】:

您创建的 HTML 表单最终如下所示:

<form action="/search" method=post>
    <p><input type="text" name="query" value="test"></p>
    <p><input type="submit" value="Search"></p>
    <br />
</form>

注意method=post 部分。这告诉浏览器在提交表单时使用 POST 而不是 GET。当它使用 POST 时,数据包含在结果请求的正文中。使用 GET 时,数据包含在 URL 中。因此,删除 HTML 的这一部分,让表单看起来像这样,浏览器将发出 GET 请求。

<form action="/search">
    <p><input type="text" name="query" value="test"></p>
    <p><input type="submit" value="Search"></p>
    <br />
</form>

请注意,如果您这样做,您还需要更改“搜索”视图..

@app.route('/search')
def search():
    return request.args['query']

请注意,我已经删除了methods=['POST'] 部分,所以现在搜索视图将接受GET 请求。另外,我使用的是request.args 而不是request.form。请参阅API Documentation 了解区别。

有关详细信息,请参阅 When should I use GET or POST method 上的答案,或搜索描述差异的其他网站(例如 this site)。

了解 GET 和 POST 之间的区别(特别是 HTTP 和 HTML 如何从浏览器向服务器发出请求)对于了解 Flask 等 Web 框架的工作原理是绝对必要的。

【讨论】:

  • 我想不出我对 GET 和 POST 的误解那么多,谢谢!它工作得很好。
猜你喜欢
  • 2021-12-14
  • 2023-04-01
  • 2018-12-09
  • 1970-01-01
  • 1970-01-01
  • 2023-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多