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

Django接收AJAX POST请求后视图render/redirect不生效如何解决

问题核心原因

你发起的是AJAX异步请求,浏览器默认不会对AJAX请求的响应做全页面跳转、全页面渲染的操作:后端返回的render渲染后的HTML、redirect重定向响应都会被AJAX的success回调接收,你当前的success回调仅做了标记变量和日志打印,没有对响应内容做任何处理,所以看起来页面没有任何变化。

对应解决方法

根据你的需求选择对应方案即可:

方案1:需要全页面跳转到新视图

两种实现方式任选:

  • 废弃AJAX请求,改为使用form表单提交POST请求,浏览器会自动处理后端返回的渲染/重定向响应
  • 保留AJAX请求,在success回调中手动触发页面跳转:
success: function(res) {
  rendered = true;
  console.log("Success");
  // 直接跳转到目标页面地址,也可以由后端返回跳转地址后赋值
  window.location.href = '/app/你需要跳转的路径';
}

方案2:需要在当前页面局部替换为新视图内容

在当前页面预留一个用于承载内容的DOM容器,在success回调中把后端返回的HTML插入到容器中即可:

// 假设当前页面有id为content-wrapper的容器用于承载视图内容
success: function(htmlContent) {
  rendered = true;
  console.log("Success");
  document.getElementById('content-wrapper').innerHTML = htmlContent;
}

额外注意事项

你当前Django视图中存在未定义变量的问题:Owner.objects.get(user=u)中的u没有声明赋值,应该改为从请求中获取当前登录用户request.user,否则这段逻辑会持续触发异常走except分支,无法正常拿到用户的签到状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:27:05