jquery $.post时django用render(request, 'xxx.html', data)来重定向不跳转?
专栏:web开发笔记 Oct. 14, 2025, 6:17 p.m. 8 阅读
ajax url重定向问题

jquery $.post做用户登录检查,如果没有用户登录,则跳转到登录页面。但是发现在django views.py里用render html不生效,页面不跳转。

return render(request, 'login.html', data)

查阅资料发现ajax无法作301重定向,server返回的是200。那么怎么解决呢?

最彻底的方式是django只是返回重定向的url,转由前端来响应和跳转。比如django返回json数据里包含重定向的url:

data = {
    "redirect_url": "login.html"
}
return JsonResponse(data, safe=False)

jquery收到带重定向的url执行跳转:

$.post(
    "handle_api",
    {...},
    function(data, status){
        if(status == "success"){
            if(data.redirect_url){
                window.location.href = data.redirect_url;
            }
        }
    }
);

实测这种方法可以稳定重定向,也比较灵活。

感谢阅读,更多文章点击这里:【专栏:web开发笔记】
最新20篇 开设专栏