亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Django中接收JSON格式的數據

如何在Django中接收JSON格式的數據

翻過高山走不出你 2018-10-10 12:57:41
查看完整描述

2 回答

?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

下面通過一個例子說明如何從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)
查看完整回答
反對 回復 2018-10-24
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

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返回.

查看完整回答
反對 回復 2018-10-24
  • 2 回答
  • 0 關注
  • 826 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號