我使用Django的内置DeleteView,并为success_url
属性分配了一个值。现在在我的模板中,我通过JQuery的$
.post()方法触发此视图。删除该项目后,我不会重定向到success_url
。经过一番搜索,我发现这似乎是AJAX
post方法的问题,它忽略了重定向。
我通过添加一个函数将其设置window.location="#myRedirectionURL"
为$.post()
JQuery中的第三个参数来修复它。
但是,这种方式似乎不是Django。从本质上讲,它是从AJAX而非Django解决问题的。而且,它success_url
在DeleteView中无用(但是您仍然必须为分配一个值success_url
,否则Django会引发错误)。
那么通过AJAX发布时重定向是否正确?有什么更好的方法吗?
非常感谢。
Ajax不会重定向页面!
从重定向中获得的是POST响应中数据对象内部新页面中的html代码。
如果您知道在任何操作失败后将用户重定向到何处,则只需执行以下操作:
在服务器上,
万一你有一个错误
response = {'status': 0, 'message': _("Your error")}
如果一切顺利
response = {'status': 1, 'message': _("Ok")} # for ok
发送响应:
return HttpResponse(json.dumps(response), content_type='application/json')
在html页面上:
$.post( "{% url 'your_url' %}",
{ csrfmiddlewaretoken: '{{ csrf_token}}' ,
other_params: JSON.stringify(whatever)
},
function(data) {
if(data.status == 1){ // meaning that everyhting went ok
// do something
}
else{
alert(data.message)
// do your redirect
window.location('your_url')
}
});
如果您不知道将用户发送到哪里,并且希望从服务器获取该网址,只需将其作为参数发送:
response = {'status': 0, 'message': _("Your error"), 'url':'your_url'}
然后将其替换为窗口位置:
alert(data.message)
// do your redirect
window.location = data.url;
问题内容: 我希望ajax发布上的成功可以转到主页。由于某种原因,我一直做错了。知道我应该怎么做才能解决这个问题吗? 阿贾克斯 问题答案: 希望以上内容对我有所帮助,因为我遇到了同样的问题
问题内容: 我网站的主页顶部有多个按钮。只要按下这些按钮之一,就会将获取请求发送到django视图,该视图将被重定向,并过滤django模型的查询集并最终显示在网页上。我知道我的ajax可以正常工作,因为终端说请求已正确重定向。重定向到的功能似乎也很有效,因为它非常简单并且没有引发任何错误。但是,我的看法不变,我不确定为什么。 urls.py views.py 问题答案: 您不能在您的情况下使用D
问题内容: 我正在尝试在Django中使用jQuery / AJAX发布数据,并且遇到了麻烦。当我运行下面的代码并单击“测试”按钮时,整个页面将再次重新加载,这不是我想要的(这就是我使用AJAX的原因)。 我也无法确认AJAX请求正在进入Django视图。 编辑:我对return false和进行了编辑。无法加载新页面,但仍无法在该字段中看到更新的文本。我不确定是否正在发送数据。我在控制台中看到:
问题内容: 我正在尝试在Django中使用jQuery / AJAX发布数据,并且遇到了麻烦。当我运行下面的代码并单击“测试”按钮时,整个页面会再次重新加载,这不是我想要的(这就是我使用AJAX的原因)。 我也无法确认AJAX请求正在进入Django视图。 编辑: 我对return false和进行了编辑。无法加载新页面,但仍无法在该字段中看到更新的文本。我不确定是否正在发送数据。我在控制台中看到
问题内容: 我有一个Ajax POST发送到我的控制器之一。例如 查询>索引。 在Index()动作中,我返回JSON的ActionResult。 在进行登录检查时,我会执行一条if语句,并且如果activeUser的会话令牌为null,我会执行 但是,这不能正确重定向,而是以浏览器抱怨的JSON返回结果。 如何正确设置重定向,以便如果IF语句失败,它将转到登录页面,否则它将返回我需要的JSON结
问题内容: 当我尝试通过Ajax(jQuery)将数组发送到Django时 JavaScript代码: 我尝试读取数组: 蟒蛇: 我只得到最后一个数组值: 我究竟做错了什么? 问题答案: 您正在寻找的 https://docs.djangoproject.com/zh-CN/2.0/ref/request- response/#django.http.QueryDict.getlist