django的序列化
请求接口的序列化有很多方式,下面只是将看到的方式进行归整,以便以后使用
方法一:
强制转换,因为django中的ORM查询出来的是queryset格式,在用HttpResponse传递时 无法被序列化,所以将其强制转换成列表,进行序列化
list1 = list(Book.objects.all().values('name','price'))
return HttpResponse(json.dumps(list1))
方法二:
用一个列表进行接收,然后进行序列化
list1 = Book.objects.all()
temp = []
for book in list1:
temp.append({
'name':book.name,
'price':book.price,
})
return HttpResponse(json.dumps(temp))
方法三:
因为列表接收的,如果Book中的字段非常多,我们需要将每一个字段都编写进去,非常麻烦,所以 有一个方法 叫做 model_to_dict方法,此方法会将model中的内容转换成字典的格式
from django.forms.models import model_to_dict
list1 = Book.objects.all()
temp = []
for book in list1:
temp.append(model_to_dict)
return HttpResponse(json.dumps(temp))
方法四:
使用django的序列化组件 serializers组件,这个组件中有serializer的方法,有两个参数,第一个是需要序列化的数据类型,第二个参数是需要序列化的变量
from django.core import serializers
serializers.serializer('json',list1)
方法五:
使用 django-restframework 进行序列化(这个在django中最常用,具体方法会在下一篇博客中记录)