在views.py:
def changeCat(request, cat_key) :
cat = Category.objects.get(pk=cat_key)
for doc in cat.document_set.all() :
log_changing(doc.title, 'deleted', doc.pk)
cat.delete()
return HttpResponseRedirect(reverse('list'))
在静态js文件中:
$.post('/handbook/changeCat/', {"title" : $("#catTitle").val()})
我想让$ .post函数接受简单的视图返回,就像它在提交表单后行动一样,或者用location.href更改URL。所以我试图添加.success功能:
.success(function(data){
//$('html').html(data)//worked bad for me, causing staticfiles issue
location.reload()//it works, but without using response
});
为什么我不喜欢reload()方法:当出现500错误时,我没有从django收到那个可爱的调试报告,只得到这个错误代码。 另一种方法是制作隐藏表单并提交它而不是使用$ .post,但我希望有更有效和正确的方法。
答案 0 :(得分:1)
您在此处不需要异步POST
或重新加载。该视图设置为响应HTTP 302,因此它已经要再次往服务器进行往返加载重定向页面。
使用简单的form.submit()
或者如果您想进行一些处理以确定POST
变量和值应该是什么,那么请查看此SO question/answer。
答案 1 :(得分:0)
为了让javascript能够读取服务器发送的数据
success(function(data){
}
它必须采用某种形式的可交换格式(xml,json)。 我建议你使用DjangoRestFramework。 查看此页面:http://www.django-rest-framework.org/tutorial/2-requests-and-responses/
或者你可以做这样的事情而不需要休息框架: Django view returning json without using template