序列化使用

我们在django shell中来学习序列化器的使用。

python manage.py shell

基本使用

1) 先查询出一个图书对象

from book.models import BookInfo

book = BookInfo.objects.get(id=4)

2) 构造序列化器对象

from book.serializers import BookInfoSerializer

serializer = BookInfoSerializer(book)

3)获取序列化数据

通过data属性可以获取序列化后的数据

serializer.data

# {'is_delete': False, 'pub_date': '1987-11-11', 'readcount': 58, 'image': None, 'id': 4, 'commentcount': 24, 'name': '雪山飞狐'}

4)如果要被序列化的是包含多条数据的查询集QuerySet,可以通过添加many=True参数补充说明

books = BookInfo.objects.all()
serializer = BookInfoSerializer(books, many=True)
serializer.data

# [OrderedDict([('id', 3), ('name', '笑傲江湖'), ('pub_date', '1995-12-24'), ('readcount', 28), ('commentcount', 18), ('is_delete', False), ('image', None)]), OrderedDict([('id', 4), ('name', '雪山飞狐'), ('pub_date', '1987-11-11'), ('readcount', 58), ('commentcount', 24), ('is_delete', False), ('image', None)]), OrderedDict([('id', 5), ('name', '新射雕英雄传'), ('pub_date', '2000-05-01'), ('readcount', 0), ('commentcount', 0), ('is_delete', False), ('image', None)]), OrderedDict([('id', 7), ('name', 'python入门'), ('pub_date', '2018-05-12'), ('readcount', 0), ('commentcount', 0), ('is_delete', False), ('image', None)]), OrderedDict([('id', 9), ('name', 'python运维'), ('pub_date', '2018-05-12'), ('readcount', 0), ('commentcount', 0), ('is_delete', False), ('image', 'book/1.png')])]