博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django返回json的几种方法以及android调用
阅读量:7079 次
发布时间:2019-06-28

本文共 2730 字,大约阅读时间需要 9 分钟。

hot3.png

用django做android后台,必不可缺少的就是返回json数据。返回json挺方便的,有以下几种方法:

1.最简单的一种(推荐)

model.pyclass Click(models.Model):    count = models.IntegerField()    time = models.CharField(max_length=64, default="")
views.pydef json1(request):       all = Click.objects.values()    return JSONResponse(all)
结果:

可能你需要的形式不是这样的,常用的是:

{“res”:"success", "msg":[{"count":1,"id":1,"time":"2015-12-12"},{"count":2,"id":2,"time":"2015-12-2"},{"count":3,"id":3,"time":"2015-12-3"}]}

需要修改views.py:

views.pydef json1(request):       all = Click.objects.values()    return JSONResponse({"res":"success", "msg":all})
结果:

2.可以用框架djangorestframework.具体怎么用看,这只是个例子

model.pyclass Click(models.Model):    count = models.IntegerField()    time = models.CharField(max_length=64, default="")
新建一个api.py文件,有点像struts2中的实例化

class ClickSerializer(serializers.ModelSerializer):    class Meta:        model = Click        fields = ('id', 'count', 'time')
注意:id字段django会自动帮你创建(就是pk)

最后就是views.py

views.py@csrf_exemptdef snippet_list(request):    """    List all code snippets, or create a new snippet.    """    if request.method == 'GET':        snippets = Click.objects.all()        serializer = ClickSerializer(snippets, many=True)        return JSONResponse(serializer.data)    elif request.method == 'POST':        data = JSONParser().parse(request)        serializer = ClickSerializer(data=data)        if serializer.is_valid():            serializer.save()            return JSONResponse(serializer.data, status=201)        return JSONResponse(serializer.errors, status=400)@csrf_exemptdef snippet_detail(request, pk):    """    Retrieve, update or delete a code snippet.    """    try:        snippet = Click.objects.get(pk=pk)    except Click.DoesNotExist:        return HttpResponse(status=404)    if request.method == 'GET':        serializer = ClickSerializer(snippet)        return JSONResponse(serializer.data)    elif request.method == 'PUT':        data = JSONParser().parse(request)        serializer = ClickSerializer(snippet, data=data)        if serializer.is_valid():            serializer.save()            return JSONResponse(serializer.data)        return JSONResponse(serializer.errors, status=400)    elif request.method == 'DELETE':        snippet.delete()        return HttpResponse(status=204)
结果:

3.如果你只是想把一个字典返回,用simplejson.dumps就可以了。

def jsonTest(request):    #主要是返回需要的结构类型    data = []    data1 = {}    data1["name"] = "me"    data1["age"] = "23"    json_data = serializers.serialize("json", all)    data.append(data1)    jsons = simplejson.dumps({"res":"success", "msg":data})    return HttpResponse(jsons, content_type="application/json")
结果:

更多的资源可以查看我的另一篇博客---------django推荐书籍--------有一些使用django的资源

转载于:https://my.oschina.net/liuxinquan/blog/552540

你可能感兴趣的文章
各操作系统配置NTP
查看>>
使用mysql索引技巧及注意事项
查看>>
按照发起的方式,DDoS可以简单分为三类
查看>>
2月新书,送出一本你爱的!
查看>>
2018LinuxCon,开源界的大咖们来了,赶紧行动!
查看>>
10月24日程序员关爱日
查看>>
python函数定义
查看>>
服务器的安装
查看>>
如何优雅的处理异常(java)?
查看>>
VRRP 虚拟冗余路由协议
查看>>
express不是内部或外部命令
查看>>
通过反射获取成员方法并使用
查看>>
String StringBuffer StringBuilder
查看>>
bash的工作特性及命令状态返回查询
查看>>
Samba服务共享(匿名用户访问、本地用户访问、虚拟用户访问)
查看>>
HttpServletResponse输出乱码的问题
查看>>
你真的很熟分布式和事务吗?
查看>>
基于ThreadPoolExecutor实现工作引擎参考
查看>>
Go语言的基本数据类型
查看>>
WEB测试:***apache
查看>>