文档章节

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

刘新全
 刘新全
发布于 2015/12/28 22:16
字数 430
阅读 3272
收藏 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的资源

© 著作权归作者所有

共有 人打赏支持
刘新全
粉丝 12
博文 57
码字总数 29105
作品 0
兰州
程序员
喜闻乐见-Android LaunchMode

launchMode,通俗点说,就是定义了Activity应该如何被launch的。那么这几种模式的区别以及应用场景,会有何不同呢?谷歌是基于什么原因设计这几种模式的呢?这几种模式背后的工作原理是什么呢...

Q吹个大气球Q
10/01
0
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
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
onSaveInstanceState和onRestoreInstanceState

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

枫兮兮
2014/02/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

兄弟连区块链教程之以太坊源码分析交易数据分析

交易的数据结构 交易的数据结构定义在core.types.transaction.go中,结构如下: type Transaction struct {data txdata// cacheshash atomic.Valuesize atomic.Valuefrom atomic.V...

兄弟连区块链入门教程
16分钟前
1
0
Tomcat优化经验之谈

Tomcat优化经验之谈 程序员小新人学习 2018-07-23 12:09:36 由于刚做完一个tomcat,jboss,Oracle性能优化项目,想做个总结。写写项目过程中对他们优化过程的理解。 tomcat安装配置就不讲啦(...

两广总督bogang
23分钟前
2
0
Spark中foreachPartition和mapPartitions的区别

spark的运算操作有两种类型:分别是Transformation和Action,区别如下: Transformation:代表的是转化操作就是我们的计算流程,返回是RDD[T],可以是一个链式的转化,并且是延迟触发的。 Ac...

张泽立
25分钟前
2
0
git reset 和 git revert, git log 和 git reflog 比较

前言:仙儿苦设相思局,寻欢误入冷香处 故事背景: 那一晚 月黑风高之夜 李寻欢 在自诩为江湖正义的一群伪君子设计好的圈套(repository)中做了(commit)三件事:              ...

猿神出窍
36分钟前
1
0
kotlin使用spring mvc(一)

过滤器Filter,是Servlet的一种技术。可通过Filter,对请求进行拦截,比如判断用户是否登录、验证黑名单等并且可对请求进行预处理。 接下来介绍使用WebFilter配置过滤器并实现读取cookie判断...

weidedong
40分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部