python - 使用 Flask 将表单数据保存在 url 中

标签 python forms url flask

尽管查看了使用 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/p>

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

提前致谢

最佳答案

您创建的 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>

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

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

请注意,我已经删除了 methods=['POST'] 部分,因此现在搜索 View 将接受 GET 请求。另外,我使用的是 request.args 而不是 request.form。查看API Documentation为了区别。

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

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

关于python - 使用 Flask 将表单数据保存在 url 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20885937/

相关文章:

python - 我怎么知道子进程何时死亡?

python - 如何将日期时间格式的排列转换为在Python中绘制?

python - Django REST 框架外键和过滤

spring - 从字符串转换为 Spring MVC 表单数据绑定(bind)的自定义对象?

magento - magento 站点中不同 url 键中的重复内容

regex - mod重写url中的路径

python - 如何在Python中创建元音计数器

html - 提交按钮中的字符可以采用不同的格式吗?

forms - 更改jQuery UI自动完成的查询参数

php - 将非扩展文件定向到 .php