如何在Django中接收JSON格式的数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Django中接收JSON格式的数据相关的知识,希望对你有一定的参考价值。
下面通过一个例子说明如何从HTML中发送json,并在Django中接收json数据,在HTML中,可以通过JSON对象将数据以Json格式发送到服务器,假设在play.html中有以下内容要发送到服务器:
用户名username
密码password
一个数组,其中每个元素包含: 游戏编号game_id和得分level
那么,,可以使用如下JavaScript(JQuery)代码:
<script type="text/javascript">$(function()
$(\'#upload\').click(function()
var json_obj =
username: $(\'#username\').val(),
password: $(\'#password\').val(),
datas: [
game_id: $(\'#datas1\').val(),
level: $(\'#level1\').val()
,
game_id: $(\'#datas2\').val(),
level: $(\'#level2\').val()
]
; //JSON对象
var json_str = JSON.stringify(json_obj); //将JSON对象转变成JSON格式的字符串
$.post("/datasave", json_str, callback, "json");
)
function callback(json)
$(\'#response\').html(\'code:\'+json[\'status\'][\'code\'] + "\\tmessage:" + json[\'status\'][\'message\']);
)
</script>
在上面的代码中,数据将发送到/datasave,在Django中使用request.raw_post_data,并借助simplejson来将其转换为字典dict数据类型,代码如下:
def datasave(request):dict =
info = \'Data log save success\'
try:
if request.method == \'POST\':
//request.raw_post_data从客户端发送过来的原始数据,通过simplejson的loads方法将其转换为字典数据类型req
req = simplejson.loads(request.raw_post_data)
username = req[\'username\']
password = req[\'password\']
datas = req[\'datas\']
game_id1 = datas[0][\'game_id\']
except:
import sys
info = "%s || %s" % (sys.exc_info()[0], sys.exc_info()[1])
dict[\'message\']=info
dict[\'create_at\']=str(ctime())
json=simplejson.dumps(dict)
return HttpResponse(json) 参考技术A def datasave(request):
dict =
info = 'Data log save success'
try:
if request.method == 'POST':
req = simplejson.loads(request.raw_post_data)
username = req['username']
password = req['password']
datas = req['datas']
game_id1 = datas[0]['game_id']
except:
import sys
info = "%s || %s" % (sys.exc_info()[0], sys.exc_info()[1])
dict['message']=info
dict['create_at']=str(ctime())
json=simplejson.dumps(dict)
return HttpResponse(json)
request.raw_post_data表示的是从客户端发送过来的原始数据,为了纯字符串, 通过simplejson的loads方法将其转换为字典数据类型req.
上面的代码也演示了如何以JSON格式作为响应值, 而非HTML, 即通过simplejson的dumps方法,
将字典数据dict序列化为字符串形式,将通过HttpResponse返回.
以上是关于如何在Django中接收JSON格式的数据的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django 1.6 中使用 HTTP POST 请求接收 json 数据?