python - 如何在 POST 后强制重新加载页面
问题描述
我正在使用带有 get 和 post 方法的基于类的视图
class MyView(View):
def get(self,request, *args, **kwargs):
#some code
def post(self,request, *args, **kwargs):
#update some data which is used in the view
return redirect('app:my-view')
这样做的问题是django在重定向后没有重新执行该get
方法(可以在firebug中确认GET请求)。如果我F5
在浏览器中手动点击,我可以看到修改后的数据。
这可能是缓存问题,但想要更新页面但如果页面在 POST 之后没有在 GET 中重新加载,我不能这样做。
解决方案
您的重定向实际上有效,但是当您使用Ajax发出请求时,您的浏览器不会被重定向,只有您的 ajax 请求被重定向,并且不会更改浏览器中的页面 url。
这实际上是 ajax 请求的全部意义所在,您可以在不更改浏览器 url 的情况下与服务器交换信息。您对 ajax 请求所做的任何事情都不会影响浏览器 url。
如果您将一个没有 ajax 的 html 表单发布到此 url,您的 post 方法将被执行,然后您的页面将使用 get 请求重定向。
要使用 ajax 做你想做的事,我建议你不要在你的 post 请求结束时重定向,而是返回一个成功的响应。然后,在客户端,发出 ajax 请求,并在请求的成功处理程序上重新加载页面。
推荐阅读
- python - 错误:os-sys 的轮子无效,无法读取“os_sys-1.9.3.dist-info/WHEEL”
- django - Django Ajax Get 方法给出 405(不允许的方法)错误
- android-studio - Android - 如何在正文中使用带有元素标签的 Volley HTTP Post
- excel - 如何使用 Excel 对行中的数据进行计数
- python-3.x - 有什么方法可以在多行上使用 open() 写入函数来连接字符串、数字和符号?
- android - 你可以在颤振上自动填充信用卡信息吗?
- reactjs - react-query 遇到 401 时尝试刷新令牌并使查询无效
- typescript - 闭包编译器类型 !Object 的 TypeScript 等价物是什么
? - sql - 如果 SECOND 语句失败 SQL,则不执行 FIRST 语句
- kubernetes - 如何删除处于 Pending 状态超过 n 小时的陈旧 Pod?