json格式的数据本质上是一个字符串
常见的两种json格式数据形式:
1.类似字典形式
'{
'id':1001,
'name'=Tom'
}'
2.类似字典形式的数组
'[
{'id':1001,'name':'Toma','age':12},
{'id':1002,'name':'Tomb','age':14},
{'id':1003,'name':'Tomc','age':16}
]'
get请求:request.query_params post请求:request.data Response可以将字典形式的{'msg': 'success'}自动转换成json字符串的形式 Response需要附加一个状态码,status=
class MyView(APIView):
def get(self, request):
print(request.query_params)
return Response({'msg': 'success'}, status=200)
def post(self, request):
print(request.data)
# Response可以将字典形式的{'msg': 'success'}自动转换成json字符串的形式
# Response需要附加一个状态码,status=
return Response({'msg': 'success'}, status=201)
目前在DRF中,我们所使用最多的就是Response这个方法,经常使用已经序列化好的数据结合Response返回
{ # 已经序列化好的数据 是字典或数组字典的形式 外部没有引号
'id':1001,
'name'=Tom'
}
ORM操作查询到的是一个查询结果集,也是python的对象,python就是面对对象编程的
用class类方法定义的视图是一个抽象类,用抽象类定义出来的对象是一个具体的实例对象,利用ORM操作获取到的数据是一个具体的实例对象,是类对象格式的复杂数据
序列化:ORM操作得到的结果 转化为 简单格式的数据(字典,字典列表格式)
反序列化:json格式的数据 转化为 ORM操作得到的结果(python的对象)
在Response函数的第一个参数位置上,这个data不能是复杂结构的数据,比如ORM查询到的数据,ORM的数据需要提取出来成为Python的数据类型或者使用序列化方式将其加工才可以使用Response进行返回
QuerySet是什么:
Django的ORM中存在查询集的概念。
查询集,也称查询结果集、QuerySet,表示从数据库中获取的对象集合。
当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表):
- all():返回所有数据。
- filter():返回满足条件的数据。
- exclude():返回满足条件之外的数据。
- order_by():对结果进行排序。
对查询集可以再次调用过滤器进行过滤,如
BookInfo.objects.filter(bread__gt=30).order_by('bpub_date')
也就意味着查询集可以含有零个、一个或多个过滤器。过滤器基于所给的参数限制查询的结果。
从SQL的角度讲,查询集与select语句等价,过滤器像where、limit、order by子句。
判断某一个查询集中是否有数据:
- exists():判断查询集中是否有数据,如果有则返回True,没有则返回False。