You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django技术问询:如何在POST响应中重置页面URL?

编辑于2024-01-12

  • 请勿回答此问题,它可能没有意义。我尝试了Content-Location,但行为不符合预期,且不同浏览器表现可能不同。
  • 我将采用更常规的处理方式:通过按钮名称识别行(遗憾的是时间复杂度为O(n))并扫描列。
  • 我保留此问题作为记录(除非有更专业的人士建议删除)。

~~

背景

页面展示数据库中的记录列表,部分列可编辑,其中一个单元格需显示求和结果,布局如下:

+----+-------+--------+--------+--------+---------------+
| id | name  | Price  |Packing |Shipping| Total fees    |
+----+-------+--------+--------+--------+---------------+
| 32 | Name1 | 150.25 | (0.00) | (1.00) | <Update> 0.00 | <Save>

| 47 | Name2 |  57.16 | (0.50) | (1.00) | <Update> 0.00 | <Save>
+----+-------+--------+--------+--------+---------------+
           <Cancel>  <Approve>

其中(…)表示输入字段,<…>表示按钮。

需求是允许手动覆盖数据库中的数据,若该行未进入工作流下一步的“批准”状态,则将覆盖内容保存到数据库供后续查看。

<Update>按钮用于计算费用总和,这部分应通过客户端JavaScript本地处理。

<Save>按钮需触发POST事务,通过formaction=传递行ID以识别待处理的订单,此时请求URL为http://host/app/save/,而页面初始URL为http://host/app。

在urls.py中可轻松配置路由:

urlpatterns=[
  path('app', MyView.as_view(), name='current_list'),
  path('app/save/<id>', MyView.as_view(), name='patch_entry'),
]

点击<Save>后,post()方法可获取处理请求所需的所有信息,但如果用render()返回响应,浏览器显示的页面URL会变为http://host/app/save/。

此时若再次点击其他<Save>按钮,浏览器会发送请求http://host/app/save/save/,显然会失败;同理,点击<Approve>按钮时,会发送*http://host/app/save/*请求,无匹配路由也会失败。

问题

似乎应通过重定向返回响应,但我不希望这样做,因为重定向会触发新的GET请求,进而导致重复查询数据库,而我们已经处理过所有信息。

有没有办法在返回响应时将页面URL“重置”为初始状态?

我的设计可能完全错误,欢迎任何简化处理的建议。

提前感谢。
~~

内容的提问来源于stack exchange,提问作者ajlittoz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 20:13:14