文档章节

django返回json的几种方法以及android调用

刘新全
 刘新全
发布于 2015/12/28 22:16
字数 430
阅读 3204
收藏 2

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

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


model.py

class Click(models.Model):
    count = models.IntegerField()
    time = models.CharField(max_length=64, default="")
views.py

def 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.py

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


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


model.py

class 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_exempt
def 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_exempt
def 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的资源

© 著作权归作者所有

共有 人打赏支持
刘新全
粉丝 11
博文 57
码字总数 29105
作品 0
兰州
程序员
Android Volley框架的几种post提交请求方式

首先简单描述一下Google的Android开发团队在2013年推出的一个网络通信框架Volley.它的设计目标是进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如下载文件等,Volley的...

gaolu
2014/08/08
0
1
Android客户端与服务器交互方式-小结

最近的Android项目开发过程中一个问题困扰自己很长时间,Android客户端与服务器交互有几种方式,最常见的就是webservices和json。要在Android手机客户端与pc服务器交互,需要满足下面几种条件...

x-knight_勋爵
2016/04/18
0
0
onSaveInstanceState和onRestoreInstanceState

本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState() 和 onRestoreInstanceState(),并且在介绍这两个方法之后,再分别来实现使用InstanceState保存和恢复数据功能、 Andr...

枫兮兮
2014/02/25
0
0
android中JSON的解析

android中网络数据传输是经常被用到的,通常我们使用xml或者json,而json更加轻量,便捷,我们使用的更多。我自己在项目中使用很多,今天就说说android中怎么去解析JSON,帮助自己总结内容,...

码农明明
2014/06/04
0
0
Android之Activity的几种跳转方式

1.显示调用方法 Intent intent=new Intent(this,OtherActivity.class); //方法1 Intent intent2=new Intent(); intent2.setClass(this, OtherActivity.class);//方法2 intent2.setClassName(......

Airship
2015/03/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

windbg学习记录

我开始熟练使用windbg是从帮助手册开始的,也就是.hh命令。 就像学习windows开发从msdn开始一样,微软的产品虽然不开源,但是文档做的是相当的好。然而那些开源的东西呢?开源的竞争力其实就...

simpower
5分钟前
0
0
学习scala的网站汇总

https://www.codacy.com/blog/how-to-learn-scala/

Littlebox
7分钟前
0
0
配置本地的cloud9开发环境

前言 说到(前端)在线IDE开发环境,cloud9是不能绕过的,cloud9支持很多语言,默认支持的就有Node.js,Python,Ruby,PHP,Go,更逆天的是,他还支持数据库,包括MySQL,MongoDB,Redis,S...

Kefy
11分钟前
0
0
springcloud应用程序上下文层次结构

如果您从SpringApplication或SpringApplicationBuilder构建应用程序上下文,则将Bootstrap上下文添加为该上下文的父级。这是一个Spring的功能,即子上下文从其父进程继承属性源和配置文件,因...

itcloud
16分钟前
0
0
新程序员最爱的免费资源

简评:国外美女程序员推荐了她自己用过的一些免费资源,对新手比较友好的那种。 原作者 Ali Spittel,是个美女程序员,以下这些资源都是她自己试过的。以下「我」代表 Ali Spittel。 学 HTML...

极光推送
19分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部