作者kajm (kajm)
看板Python
标题[问题] django抓不到POST的资料
时间Thu Apr 21 22:35:54 2016
各位前辈好,
这两天用django在练习,写了一只用ajax以POST方式送表单的程式,
可是不知道为什麽,虽然在浏览器(Chrome)可以看到POST传出去的资料是正确的,
但是在程式读取时却发现request.POST是一个空的dictionary
大致的程式码如下:
AJAX:
var name = $("input#Name").val();
var id = $("input#Id").val();
$.ajax({
url: "register",
type: "POST",
dataType: "json",
contentType: "application/json",
data: {
id: id,
name: name
},
success: function(result){
....(此处正常执行)....
}
error: fuction(){
....
}
基本上上面的程式码都是可以正常运作的,
在浏览器的开发工具内可以看到资料都有出现。
view.py:
....
from django.views.decorators.csrf import csrf_protect
....
@csrf_protect
def register(request):
if request.method == 'POST':
if request.is_ajax():
id = request.POST.get('id')
name = request.POST.get('name')
.... 略
另外还有设定csrf_token,看起来应该都有正常运作
设定方式是在ajax程式码之前加上下面这一段:
var csrftoken = $.cookie('csrftoken');
function csrfSafeMethod(method) {
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajaxSetup({
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
});
在form里面也有写{% csrf_token %}
看起来应该是可以顺利执行,但是资料POST之後就消失了...
求各位前辈指点,谢谢><
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 42.73.113.50
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1461249357.A.CDE.html
1F:推 kenduest: POST json format 的话用 request.body 内找找 04/22 00:35
2F:→ kajm: 感谢大大,可以顺利抓到资料了!但是他不是以json的格式传过 04/22 01:22
3F:→ kajm: 来,而是用&分割,例如:id=1&name=kajm这样..请问是不是我 04/22 01:22
4F:→ kajm: 忽略了什麽参数设定呢QQ 04/22 01:23
5F:→ kajm: 刚刚JSON.stringify(data)的方式转换成功了!再次感谢 :) 04/22 01:40
6F:→ ck574b027: 呃,contentType 即使是 json 还是会传 query string吧 04/22 02:38