django中Request获取数据和Serializer中获取数据总结

1.正则匹配的参数获取:

url: P?<`count`>/?name=zhangsan&age=18&gender=1
通过视图函数中get(self,count):中指明count获得re匹配的结果

2.request.query_params:

得到一个QueryDict对象,使用QueryDict.get(‘name’)获取数据,也可以通过QueryDict.dict()方法将结果对象转换为python字典,只用于GET方式.

3.request.data:

得到的是请求体的数据,得到是一个dict,当请求为GET时候,获取结果为空
例如:post方式:

 name:张三,
 age:18,
 gender:1,

4.attrs:

用户传到serializer中validate验证时候,类型是一个OrderDict对象,获取数据的方式是OrderDict[‘key’]或者OrderDict.get(‘key’)使用后一种方式更安全,在没有key的情况下前者会报错,后者返回None

对于get方式: /?后面的内容
对于post方式: post的数据

5.self.kwargs

在视图函数中,self.kwargs获取到的数据类型为dict,序列化器中获取self.kwargs的方式: self.context[‘view’].kwargs.get(‘key’)
url: P?<count>/?name=zhangsan&age=18&gender=1
self.kwargs.get(‘count’)=re匹配到的count数据,注意不是/?后面的数据

6.validated_data

字面意思,获取的是serializer序列化验证之后的数据,数据类型为dict,对应的key是serializer中定义的字段名,也是序列化器返回给视图的数据,对于高级的视图函数(CreateAPIView,RetrieveAPIView….)即是serializer.data,返回给前端的数据,对于需要存到数据库中,serializer.create(**validated_data)返回一个模型类对象。

7.serializer.data

返回的结果是OrderDict对象
在序列化时候,传入的是模型类对象,serializer=serializer(instance=模型类对象),这个时候,若序列化器继承的是serializer.Modelserializer,那么serializer.data返回的是包含了序列化器中定义的所有的字段加上数据库定义的所有字段,这两个之和才是返回的结果.


你可能感兴趣的:(经验)