猿问

如何在Django中接收JSON格式的数据

如何在Django中接收JSON格式的数据


慕标琳琳
浏览 564回答 2
2回答

qq_花开花谢_0

下面通过一个例子说明如何从HTML中发送json,并在Django中接收json数据,在HTML中,可以通过JSON对象将数据以Json格式发送到服务器,假设在play.html中有以下内容要发送到服务器:用户名username密码password一个数组,其中每个元素包含: 游戏编号game_id和得分level那么,,可以使用如下JavaScript(JQuery)代码:123456789101112131415161718192021222324252627<script&nbsp;type="text/javascript">$(function()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;$('#upload').click(function()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;json_obj&nbsp;=&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username:&nbsp;$('#username').val(),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;password:&nbsp;$('#password').val(),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;datas:&nbsp;[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;game_id:&nbsp;$('#datas1').val(),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;level:&nbsp;$('#level1').val()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;game_id:&nbsp;$('#datas2').val(),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;level:&nbsp;$('#level2').val()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;&nbsp;&nbsp;//JSON对象&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;json_str&nbsp;=&nbsp;JSON.stringify(json_obj);&nbsp;&nbsp;&nbsp;&nbsp;//将JSON对象转变成JSON格式的字符串&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.post("/datasave",&nbsp;json_str,&nbsp;callback,&nbsp;"json");&nbsp;&nbsp;&nbsp;&nbsp;})&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;callback(json){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('#response').html('code:'+json['status']['code']&nbsp;+&nbsp;"\tmessage:"&nbsp;+&nbsp;json['status']['message']);&nbsp;&nbsp;&nbsp;&nbsp;}})</script>在上面的代码中,数据将发送到/datasave,在Django中使用request.raw_post_data,并借助simplejson来将其转换为字典dict数据类型,代码如下:12345678910111213141516171819def&nbsp;datasave(request):&nbsp;&nbsp;&nbsp;&nbsp;dict&nbsp;=&nbsp;{}&nbsp;&nbsp;&nbsp;&nbsp;info&nbsp;=&nbsp;'Data&nbsp;log&nbsp;save&nbsp;success'&nbsp;&nbsp;&nbsp;&nbsp;try:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;request.method&nbsp;==&nbsp;'POST':&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//request.raw_post_data从客户端发送过来的原始数据,通过simplejson的loads方法将其转换为字典数据类型req&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;req&nbsp;=&nbsp;simplejson.loads(request.raw_post_data)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username&nbsp;=&nbsp;req['username']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;password&nbsp;=&nbsp;req['password']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;datas&nbsp;=&nbsp;req['datas']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;game_id1&nbsp;=&nbsp;datas[0]['game_id']&nbsp;&nbsp;&nbsp;except:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;sys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;info&nbsp;=&nbsp;"%s&nbsp;||&nbsp;%s"&nbsp;%&nbsp;(sys.exc_info()[0],&nbsp;sys.exc_info()[1])&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dict['message']=info&nbsp;&nbsp;&nbsp;&nbsp;dict['create_at']=str(ctime())&nbsp;&nbsp;&nbsp;&nbsp;json=simplejson.dumps(dict)&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;HttpResponse(json)&nbsp;&nbsp;

慕神8447489

123456789101112131415161718def&nbsp;datasave(request):&nbsp;&nbsp;&nbsp;&nbsp;dict&nbsp;=&nbsp;{}&nbsp;&nbsp;&nbsp;&nbsp;info&nbsp;=&nbsp;'Data&nbsp;log&nbsp;save&nbsp;success'&nbsp;&nbsp;&nbsp;&nbsp;try:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;request.method&nbsp;==&nbsp;'POST':&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;req&nbsp;=&nbsp;simplejson.loads(request.raw_post_data)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username&nbsp;=&nbsp;req['username']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;password&nbsp;=&nbsp;req['password']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;datas&nbsp;=&nbsp;req['datas']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;game_id1&nbsp;=&nbsp;datas[0]['game_id']&nbsp;&nbsp;&nbsp;except:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;sys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;info&nbsp;=&nbsp;"%s&nbsp;||&nbsp;%s"&nbsp;%&nbsp;(sys.exc_info()[0],&nbsp;sys.exc_info()[1])&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dict['message']=info&nbsp;&nbsp;&nbsp;&nbsp;dict['create_at']=str(ctime())&nbsp;&nbsp;&nbsp;&nbsp;json=simplejson.dumps(dict)&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;HttpResponse(json)request.raw_post_data表示的是从客户端发送过来的原始数据,为了纯字符串, 通过simplejson的loads方法将其转换为字典数据类型req.上面的代码也演示了如何以JSON格式作为响应值, 而非HTML, 即通过simplejson的dumps方法,将字典数据dict序列化为字符串形式,将通过HttpResponse返回.
随时随地看视频慕课网APP
我要回答