现有数据表
使用django取出数据,并返回浏览器为json格式
# _*_coding:utf-8_*_
from django.http import HttpResponse
from .models import Student
from django.core import serializers
import json
def index(request):
result = Student.objects.all()
result_serialize = serializers.serialize('json',result)
print(type(result_serialize))
# 查询结果序列化,这个时候,result_serialize 还是字符类型,需要json.loads转化为json格式
# 不转化为json格式也是可以的直接返回数据的,但是返回的数据没有经过过滤的
return HttpResponse(result_serialize,"application/json")
这个时候打印的是字符类型,浏览返回"application/json" 有这个参数,浏览器会识别为json
<QuerySet [<Student: {'id': 1, 'name': '小明', 'sex': '男', 'age': 12, 'addr': '江西省'}>, <Student: {'id': 2, 'name': '小红', 'sex': '女', 'age': 10, 'addr': '深圳市'}>, <Student: {'
id': 3, 'name': '小黄', 'sex': '男', 'age': 11, 'addr': '北京市'}>, <Student: {'id': 4, 'name': '小张', 'sex': '男', 'age': 15, 'addr': '上海市'}>, <Student: {'id': 5, 'name': '小婷',
'sex': '女', 'age': 14, 'addr': '安徽省'}>, <Student: {'id': 6, 'name': '小梅', 'sex': '女', 'age': 12, 'addr': '四川省'}>, <Student: {'id': 7, 'name': '小涛', 'sex': '男', 'age': 11
, 'addr': '河南省'}>, <Student: {'id': 8, 'name': '小龙', 'sex': '男', 'age': 14, 'addr': '湖南省'}>, <Student: {'id': 9, 'name': '小丽', 'sex': '女', 'age': 13, 'addr': '广州市'}>, <
Student: {'id': 10, 'name': '小左', 'sex': '男', 'age': 14, 'addr': '湖南省'}>, <Student: {'id': 11, 'name': '小肖', 'sex': '男', 'age': 12, 'addr': '山西省'}>]>
<class 'str'>
[28/Mar/2020 00:56:22] "GET /api/ HTTP/1.1" 200 1421
这是浏览器返回的内容,没有经过过滤
[{"model": "api.student", "pk": 1, "fields": {"name": "\u5c0f\u660e", "sex": "\u7537", "age": 12, "addr": "\u6c5f\u897f\u7701"}}, {"model": "api.student", "pk": 2, "fields": {"name": "\u5c0f\u7ea2", "sex": "\u5973", "age": 10, "addr": "\u6df1\u5733\u5e02"}}, {"model": "api.student", "pk": 3, "fields": {"name": "\u5c0f\u9ec4", "sex": "\u7537", "age": 11, "addr": "\u5317\u4eac\u5e02"}}, {"model": "api.student", "pk": 4, "fields": {"name": "\u5c0f\u5f20", "sex": "\u7537", "age": 15, "addr": "\u4e0a\u6d77\u5e02"}}, {"model": "api.student", "pk": 5, "fields": {"name": "\u5c0f\u5a77", "sex": "\u5973", "age": 14, "addr": "\u5b89\u5fbd\u7701"}}, {"model": "api.student", "pk": 6, "fields": {"name": "\u5c0f\u6885", "sex": "\u5973", "age": 12, "addr": "\u56db\u5ddd\u7701"}}, {"model": "api.student", "pk": 7, "fields": {"name": "\u5c0f\u6d9b", "sex": "\u7537", "age": 11, "addr": "\u6cb3\u5357\u7701"}}, {"model": "api.student", "pk": 8, "fields": {"name": "\u5c0f\u9f99", "sex": "\u7537", "age": 14, "addr": "\u6e56\u5357\u7701"}}, {"model": "api.student", "pk": 9, "fields": {"name": "\u5c0f\u4e3d", "sex": "\u5973", "age": 13, "addr": "\u5e7f\u5dde\u5e02"}}, {"model": "api.student", "pk": 10, "fields": {"name": "\u5c0f\u5de6", "sex": "\u7537", "age": 14, "addr": "\u6e56\u5357\u7701"}}, {"model": "api.student", "pk": 11, "fields": {"name": "\u5c0f\u8096", "sex": "\u7537", "age": 12, "addr": "\u5c71\u897f\u7701"}}]
如何取出经过过滤后的数据
def index(request):
result = Student.objects.all()
result_serialize = serializers.serialize('json',result)
result_json = json.loads(result_serialize) # 对序列化之后的str类型数据进行转化为json对象
for item in result_json:
print(item['fields']) # 提取 'fields'字段的内容
return HttpResponse(result_serialize,"application/json")
经过过滤,数据就简洁多了,打印输出的内容为如下
{'name': '小明', 'sex': '男', 'age': 12, 'addr': '江西省'}
{'name': '小红', 'sex': '女', 'age': 10, 'addr': '深圳市'}
{'name': '小黄', 'sex': '男', 'age': 11, 'addr': '北京市'}
{'name': '小张', 'sex': '男', 'age': 15, 'addr': '上海市'}
{'name': '小婷', 'sex': '女', 'age': 14, 'addr': '安徽省'}
{'name': '小梅', 'sex': '女', 'age': 12, 'addr': '四川省'}
{'name': '小涛', 'sex': '男', 'age': 11, 'addr': '河南省'}
{'name': '小龙', 'sex': '男', 'age': 14, 'addr': '湖南省'}
{'name': '小丽', 'sex': '女', 'age': 13, 'addr': '广州市'}
{'name': '小左', 'sex': '男', 'age': 14, 'addr': '湖南省'}
{'name': '小肖', 'sex': '男', 'age': 12, 'addr': '山西省'}
也可以对这个列表进行优化,具体看需求