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