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/
在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
相关产品推荐
相关产品推荐

