gpt4 book ai didi

python - 创建一个使用 url_for() 插入 URI 变量的 Flask 搜索栏

转载 作者:太空宇宙 更新时间:2023-11-03 15:56:13 24 4
gpt4 key购买 nike

我有一个 Flask 站点,它有一个“搜索栏”,您可以在其中输入特定位置的位置 ID,然后单击 Submit被带到该位置的页面(如果存在)。这是当前的表单操作:

<form id="locationinfo" action="{{ url_for('location') }}">

当您点击Submit时您将被带到/location?info=SITEID效果很好。我想要做的是稍微改变这种行为,以便当用户单击 Submit 时他们被带到 /location/SITEID/反而。我在主 Flask 路由文件中设置了装饰器,但我正在努力将各个部分组合在一起以形成这个简单的表单。

@app.route("/location/<locationid>/")
def locations(locationid):
...
return locationid

任何方向将不胜感激!

[使用当前完整表单代码进行编辑]

@app.route("/location")
def location():
location_id = request.args.get("info")
<小时/>
<form id="info" action="{{ url_for('location') }}">
<input type="text" name="info" id="locationfield">
<button type="submit">Go!</button>
</form>

最佳答案

您无法更改 HTML 表单提交字段的方式,它们将始终位于查询字符串或正文 (POST) 中。一种选择是使用 JavaScript 覆盖提交事件以执行您自己的提交并重新呈现结果。

一个更简单的解决方案是在提交后重定向到好的网址。这使“搜索”操作与“显示”操作分开(即使它们由同一 View 处理)。

@app.route('/location/')
@app.route('/location/<int:id>/')
def location(id=None):
# redirect to the second form if the id wasn't in the path
# raises 400 error if id wasn't in the query
if id is None:
return redirect(url_for('location', id=request.args['info']))

# id is in the path, continue
...

如果您想通过 id 之外的其他内容进行搜索,您可以稍后扩展此内容。执行搜索,然后重定向到找到的 ID。

关于python - 创建一个使用 url_for() 插入 URI 变量的 Flask 搜索栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40745621/

24 4 0