为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 POST 后强制完全重新加载页面

如何在 POST 后强制完全重新加载页面

德玛西亚99 2021-12-29 18:12:22
我正在使用带有 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')这样做的问题是 djangoget在重定向后不会重新执行该方法(可以在 firebug 中确认 GET 请求)。如果我F5在浏览器中手动点击,我可以看到修改后的数据。这可能是缓存问题,但想要更新页面,但如果在 POST 后没有在 GET 中重新加载页面,我就无法执行此操作。
查看完整描述

2 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

您的重定向实际上有效,但是当您使用Ajax发出请求时,您的浏览器不会被重定向,只会重定向您的 ajax 请求,并且不会更改浏览器中的页面 url。

这实际上是 ajax 请求的全部内容,您无需更改浏览器 url 即可与服务器交换信息。您对 ajax 请求所做的任何操作都不会影响浏览器 url。

如果您将没有 ajax 的 html 表单发布到此 url,您的 post 方法将被执行,然后您的页面将使用 get 请求重定向。

要使用 ajax 做你想做的事,我建议你不要在你的 post 请求结束时重定向,而是返回一个成功的响应。然后,在客户端,发出 ajax 请求,并在请求的成功处理程序上重新加载页面。


查看完整回答
反对 回复 2021-12-29
?
MM们

TA贡献1886条经验 获得超2个赞

要解决这个问题,您必须从 Ajax 调用重定向:


$.post("",{active: status,

        success: function(){

          window.location = "";

        },

        'csrfmiddlewaretoken':jQuery("[name=csrfmiddlewaretoken]").val()});

这是通过window.location="";我传递一个空字符串来完成的,因为我正在重定向到同一页面,但您可以传递任何 url。


查看完整回答
反对 回复 2021-12-29
  • 2 回答
  • 0 关注
  • 255 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号