用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的资源