maz*_*res 1 python forms url flask
尽管看到了使用Flask构建howtos的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']
Run Code Online (Sandbox Code Playgroud)
但结果显示在myapp.com/search同时,我想是这样myapp.com/search?query=toto
我一定错过了一些非常基本的东西......我猜...有什么提示吗?
提前致谢
您创建的HTML表单最终看起来像这样:
<form action="/search" method=post>
<p><input type="text" name="query" value="test"></p>
<p><input type="submit" value="Search"></p>
<br />
</form>
Run Code Online (Sandbox Code Playgroud)
注意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>
Run Code Online (Sandbox Code Playgroud)
请注意,如果您这样做,您还需要更改"搜索"视图.
@app.route('/search')
def search():
return request.args['query']
Run Code Online (Sandbox Code Playgroud)
请注意,我已删除该methods=['POST']部分,因此现在搜索视图将接受该GET请求.而且,我正在使用request.args而不是request.form.有关差异,请参阅API文档.
有关详细信息,请参阅我应该何时使用GET或POST方法的答案,或搜索描述差异的其他网站(例如本网站).
理解GET和POST之间的区别(特别是HTTP和HTML如何工作以从浏览器向服务器发出请求)对于理解像Flask这样的Web框架是如何工作的是绝对必要的.