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;
}
}
}
);
实测这种方法可以稳定重定向,也比较灵活。