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

如何在Django中接收JSON格式的数据,第1张

Django获取数据,不管是json格式,还是浏览器地址中拼接的参数,都可以依据不同的协议,用以下的方法获取

从post中取得数据,如果不存在则默认值为1

pageNumber = request.POST.get('pageNumber',1)

从get中取得数据,如果不存在则默认值为1

pageNumber = request.GET.get('pageNumber',1)

3.从所有请求中取得数据,如果不存在则默认值为1

pageNumber = request.REQUEST.get('pageNumber',1)

4.判断一个请求是post还是get方式

if request.method == 'GET': 

    pass

if request.method == 'POST':

    pass

5.判断某个字段是否存在

if 'pageNumber' in request.GET:

    pageNumber = request.GET.get('pageNumber',1)

if 'pageNumber' in request.POST:

    pageNumber = request.POST.get('pageNumber',1)

因为客户端传递过来的数据是json数据,可以看成一个json对象。不是传过来的post表单,所以你用request.POST.get('ID', '')这种肯定取不到值的。

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

原来是contentType为application/json时,Django不支持request.POST.get(),但可以通过request.body来获取string类型的参数:

注意:这里的json.loads(request.body)可能会因为python版本的原因会报错,详细看 https://www.cnblogs.com/hooo-1102/p/12055742.html

举个栗子:

注册页面,前端的ajax请求:

后端:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6763427.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存