django 怎么处理前台发送过去的json数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django 怎么处理前台发送过去的json数据相关的知识,希望对你有一定的参考价值。

前台用jquery获取数据的代码为:
<script type="text/javascript">
$(function()
$('#sellerShipment').submit(function()
var data=[],item;
$('li',this).each(function()
item=;
$(':input',this).each(function()item[this.name]=this.value;);
data.push(item);
)

var json_str = JSON.stringify(data); //
//alert(json_str)///
$.post("/sellerShipment", "data="+encodeURIComponent(json_str), callback, "json");//

//return false;//要阻止表单的提交
)

function callback(json)
$('#response').html('code:'+json['status']['code'] + "\tmessage:" + json['status']['message']);

)
</script>

html代码为:
<form name='sellerShipment' id='sellerShipment' method='POST' action=''>
<ul>
<li><input value='a' name='orderId' value='11111'> <select name="shipment"><option value='ups'>usp</option></select></li>
<li><input value='a' name='orderId' value='2222'> <select name="shipment"><option value='ups'>usp</option></select></li>
</ul>
</form>

后台如何获取前台提交过去的数据呢? 我用raw_post_data获取的是原生的数据,没办法用json处理。

#django原始库
import django.http as djangohttp

#django第三方库
import rest_framework.views as rfview
import rest_framework.renderers as rfreader

#自定义库
import CodingPond


class IView( rfview.APIView ):
    renderer_classes = ( rfreader.JSONPRenderer, )

class JSONResponse( djangohttp.HttpResponse ):
    """
    An HttpResponse that renders it's content into JSON.
    """
    def __init__( self, data = None, header = , **kwargs ):
        content = rfreader.JSONRenderer().render( data )
        print content
#        content = CodingPond.Authcode_encode( content, "" )
        kwargs['content_type'] = 'application/json'

        super( JSONResponse, self ).__init__( content, **kwargs )
        self._init_header( header )

    def _init_header( self, header ):
        for key, value in header.items():
            self[key] = value

如此,上面是httpTools.IView接口,然后视图继承,分别重写get和post即可

class ClassifyHomeView( httpTools.IView ):
    """
    @attention: 分类主页
    @note: 
      -路径: /classify/init/
      -post: 无
      -返回: "classify":[分类数据格式]
    """
    def post( self, request ):
        command = Commands.GetClassifyInfoCommand()
        command.Excute()
        resDic = command.GetResInfo()
        return httpTools.JSONResponse( resDic )

参考技术A json.loads不行吗? 参考技术B 自己可以写一个解析数据格式的类文件,应该可行的。

以上是关于django 怎么处理前台发送过去的json数据的主要内容,如果未能解决你的问题,请参考以下文章

求助后台json串返回到前台自动四舍五入怎么解决

求助后台json串返回到前台自动四舍五入怎么解决

前台发过去的数据为Content-Type:application/json,后台如何接收

关于JSON数据转换问题

下载外部html内容客户端,发送到django服务器,将处理后的数据发送回客户端

前台JSON数据传送数据到后台,报400错误怎么解决