Django 解析参数
我正在使用AJAX请求从服务器获取数据:
$.ajax({
type: 'POST',
url: '/simple/gd/',
dataType: 'json',
data: {t : "PL"},
success: function(data) {
var newd = data['t'];
alert('Load was performed: ' + newd);
}
});
在服务器上,urls.py文件是:
(r'^simple/gd/(?P<data>.*)$', 'simple.views.getData'),
发送到服务器的URL是 http:/localhost/simple/gd/?t=PL
但是出于某种原因,我无法让getData(request, data)函数接收到"?t=PL"或者把"t=PL"作为'data'参数传递。'data'参数总是为空。
我哪里做错了呢?
2 个回答
0
这是因为 t=PL
并不是路径的一部分,它是查询字符串(简单来说,路径是 ?
之前的部分,而查询字符串是 ?
之后的部分)。
我个人建议你可以这样修改你的 urls.py
文件:
(r'^simple/gd/$', 'simple.views.getData'),
然后,把你的视图函数从类似下面的形式:
def getData(request, data):
print data
改成类似下面的形式:
def getData(request):
print request.GET.get('t', None)
1
如果你使用的是类型为 'POST' 的请求,那么数据就不会像查询字符串那样附加到网址后面。
相反,这些数据会被放在请求对象的 POST 字典里。
所以,为了传回一些能触发你警告的内容,你需要生成一个可以被理解为 JSON 数据的字符串,大概是这样的:
(r'^simple/gd/$', 'simple.views.getData'),
def getData(request):
posted_t = request.POST['t']
# Do some stuff with posted_t
server_side_var = "Yay"
return HttpResponse(u"{t:%s}" % server_side_var)