Django 前台通过json 取出后台数据

Stella981
• 阅读 673

前台通过json 取出后台数据

步骤1:后台数据通过 JSON 序列化成字符串

注意:1、json是1个字符串

          2、通过json.dumps('xxx') 序列化成 1个字符串的 '字典对象' 

views.py

def ajax(request):
    if request.method=='POST':
        print(request.POST)
        data={'status':0,'msg':'请求成功','data':[11,22,33,44]}
        return HttpResponse(json.dumps(data))
    else:
        return render(request,'ajax.html')

此时tempates 中ajax.html 代码 详细查看:https://my.oschina.net/esdn/blog/814094

Django 前台通过json 取出后台数据

此时浏览器返回的数据

Django 前台通过json 取出后台数据

步骤2:前台取出后台序列化的字符串

方法1:正则表达式 (不推荐)

方法2:****jQuery.parseJSON() ,需要import json
转换成1个JQuery可识别的字典(对象)   通过 对象. xxx 取值  (推荐)

views.py序列化:return HttpResponse(json.dumps(data))

ajax.html 取值:var obj=jQuery.parseJSON(arg)

console.log(obj.status)

修改后的tempates 中ajax.html 代码

<script type='text/javascript'>
    function DoAjax(){
            var temp=$('#na').val()
            $.ajax({
                url:'/ajax/',           //url相当于 form 中的 action
                type:'POST',            //type相当于form 中的 method
                data:{dat:temp},       // data:传人的数据 dat为任意设置的内容,相当于模版中的{author:lee}
                success:function(arg){     //成功执行  console.log() 函数 arg 为HttpResponse 返回的值
                    var obj=jQuery.parseJSON(arg)    //转化成JS识别的对象
                    console.log(obj)          //打印obj
                    console.log(arg)              //json.dumps(data) 序列化后的数据        
                    console.log(obj.status)       //取json.dumps(data)字典的值status
                    console.log(obj.msg)
                    console.log(obj.data)
                    console.log('request.POST 提交成功')
                },
                error:function(){            //失败 
                    console.log('失败')
                }
            });    
        }
</script>

此时前台浏览器 显示数据

Django 前台通过json 取出后台数据

方法3:content_type='application/json'

views.py 序列化:return HttpResponse(json.dumps(data),content_type='application/json')

浏览器F12有变色提示

或:HttpResponse(json.dumps(data),content_type='type/json')   浏览器F12无变色提示

ajax.html 取值 arg.xxx

方法4:使用JsonRespon 包 (最简单)  前台通过 arg.xxx 取值

views.py 序列化: return JsonResponse(data)

ajax.html 取值:arg.xxx

区别:HttpResponse 需要dumps 
          JsonResponse 不需要dumps

views.py

from django.shortcuts import render
from django.http import JsonResponse
def ajax(request):
    if request.method=='POST':
        print(request.POST)
        data={'status':0,'msg':'请求成功','data':[11,22,33,44]} #假如传人的数据为一字典
        #return HttpResponse(json.dumps(data))      #原来写法,需要dumps
        return JsonResponse(data)                  #后来写法
    else:
        return render(request,'ajax.html')

templates 中的 ajax.html

<script type='text/javascript'>
    function DoAjax(){
            var temp=$('#na').val()
            $.ajax({
                url:'/ajax/',           //url相当于 form 中的 action
                type:'POST',            //type相当于form 中的 method
                data:{dat:temp},       // data:传人的数据 dat为任意设置的内容,相当于模版中的{author:lee}
                success:function(arg){     //成功执行  console.log() 函数 arg 为HttpResponse 返回的值
                    //var obj=jQuery.parseJSON(arg)
                    //console.log(arg)              //json.dumps(data) 序列化后的数据    
                    console.log(arg.msg)
                    /*
                    console.log(obj)
                    console.log(obj.status)       //取json.dumps(data)字典的值status
                    console.log(obj.msg)
                    console.log(obj.data)*/
                    console.log('request.POST 提交成功')
                },
                error:function(){            //失败 
                    console.log('失败')
                }
            });    
        }
</script>
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Ajax和SpringMVC之间JSON交互
Ajax和SpringMVC之间的json数据传输有两种方式:1.直接传输Json对象2.将Json序列化成json字符串1.直接传输Json对象前端Ajax$(document).ready(function(){$("btn_login").click(function(){
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
unity将 -u4E00 这种 编码 转汉字 方法
 unity中直接使用 JsonMapper.ToJson(对象),取到的字符串,里面汉字可能是\\u4E00类似这种其实也不用转,服务器会通过类似fastjson发序列化的方式,将json转对象,获取对象的值就是中文但是有时服务器要求将传参中字符串中类似\\u4E00这种转汉字,就需要下面 publ
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这