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

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

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

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

慕標琳琳 2019-05-31 11:02:09
如何在Django中接收JSON格式的數據
查看完整描述

2 回答

?
qq_花開花謝_0

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

下面通過一個例子說明如何從HTML中發送json,并在Django中接收json數據,在HTML中,可以通過JSON對象將數據以Json格式發送到服務器,假設在play.html中有以下內容要發送到服務器:

  • 用戶名username

  • 密碼password

  • 一個數組,其中每個元素包含: 游戲編號game_id和得分level

那么,,可以使用如下JavaScript(JQuery)代碼:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<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數據類型,代碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

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)


 

 



查看完整回答
反對 回復 2019-06-01
?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

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




查看完整回答
反對 回復 2019-06-01
  • 2 回答
  • 0 關注
  • 597 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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