【发布时间】:2012-06-26 05:25:39
【问题描述】:
在我的应用程序中,有几类数据需要从客户端浏览器发送到服务器。 后端在 Django 中。我正在尝试使用 Ajax 将数据发布到 Django 中的视图函数,然后将某些内容返回给客户端。我试过的代码如下:
在 Django urls.py 中:
(r'^testPost/', testPost),
Django 视图函数:
def testPost(request):
print request
if request.method == 'GET':
rID = request.GET['rID']
rName = request.GET['rName']
elif request.method == 'POST':
rID = request.POST['rID']
rName = request.POST['rName']
return HttpResponse("ID: " + str(rID) + " and Name: " + str(rName))
前端 AJAX 调用(ExtJS 3.3):
Ext.Ajax.request({
url: 'XXXX/testPost/?',
method: 'POST',
jsonData: Ext.encode({
"rID": 1333,
"rName": 'test'
}),
headers: {
'Content-Type': 'application/json'
},
success: function (response, opts){
console.log(response.responseText);
},
failure:function (response, opts){
console.log(response.responseText);
}
});
URL 设置似乎有问题。得到错误响应:
Some unexpected error occurred. Error text was: HTTP Error 403: FORBIDDEN
更新: 1.根据ldiqual的建议,放
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
在视图脚本中
-
将 ExtJS ajax 请求代码从使用 jsonData 更改为 params:
参数:{ “rID”:1333, “rName”:“测试” }
我的问题解决了。
【问题讨论】:
-
POST 需要 CSRF 令牌
-
除了 A. Vasinov 所说的之外,您还可以通过使用
@csrf_exempt装饰您的视图来避免 CSRF 检查。 -
也谢谢你,尤其是 Idiqual。
标签: ajax django post extjs request