标签:
两次被同一块石头绊倒简直不可原谅!第一次写django程序的时候,就因为ajax post请求折腾了整整一天,时隔两个多月昨天又被虐一整晚。叔可忍婶儿也不能忍了!!!重要的事情写下来,为以后轻松碾压post请求做准备。
django post请求403:
当采用客户端象django的服务器提交post请求时。会得到403,权限异常。因为django针对提交的请教,有校验。所以会如此。
处理过程
在接收post请求的函数前面添加修饰器:@csrf_exempt
django post请求urls.py文件的配置:
前一直用get请求,我是这样配url的url(‘^addIp/‘, view.addIpInfo),后来换了POST请求,发现根本接收不到数据,查来查去都查不到原因,后来仔细比对了当时的代码才发现应该是这么配的url(‘^addIp$‘, view.addIpInfo),从网上查看了资料和解释,才想起之前看过的,这里的url匹配是使用正则表达式匹配的,如果不写$,默认只会匹配到addIp,但是其实这后面还有post请求的数据呢。当然匹配不到啦,永远报500~~~
完整的post用例:
js-ajax:
$.ajax({ type: "POST", url: "/addIp", data: postData, success: function(data){ console.info(data); }, error: function(XMLHttpRequest, textStatus, errorThrown){ console.info(XMLHttpRequest,textStatus,errorThrown) this; }, complete: function(XMLHttpRequest, textStatus){ console.info("complete"); this; }, });
urls.py:
url(‘^addIp$‘, view.addIpInfo)
python——addIpInfo方法:
from django.http import HttpResponse from django.views.decorators.csrf import csrf_exempt
@csrf_exempt def addIpInfo(request): additem = request.POST print additem return HttpResponse(‘ok‘)
参考资料:
django中“url映射规则”和“服务端响应顺序”:http://www.cnblogs.com/edisonfeng/p/3755136.html
标签:
原文地址:http://www.cnblogs.com/Eva-J/p/5222218.html