Restful的设计风格:
1.restful的设计风格遵循HTTP的协议
2.主要特征是面向资源编程,用它们的英文名词命名,而不能用动词
3.它的url如果有版本则必须要体现出来
基层serializers的结构与构成
使用序列化器的展示
列:
name = serializers.CharField(max_length=20,allow_blank=True) #对该字段进行序列化 (max_length=20)根据模型字段来选择合适的类型,allow_blank=True如果没有传入则可以为空
count = serializers.IntegerField() #这两个对字段进行序列化,是对序列化展示的过程
使用序列化器进行添加:
例:
def create(self, validated_data):
return ClsModel.objects.create(**validated_data) #**validated_data是视图端传过来的数据,不定长
在视图类里如何添加数据:
1.首先获取我们输入的数据data = request.data
2.使用我们的序列化器
3.确认数据是否存在
4.保存
5.返回响应
如果是一对多添加带有外键的话:
class UserSer(serializers.Serializer):
name = serializers.CharField(max_length=20)
age=serializers.IntegerField()
height=serializers.IntegerField()
# cls=ClsSer(read_only=True) #read_only=True只用来展示不能用来修改,write_only=True与read_only相反
cls = serializers.IntegerField(write_only=True)
# cls = serializers.StringRelatedField(read_only=True)
def create(self, validated_data):
id = validated_data.pop('cls')
return UserModel.objects.create(cls_id=id,**validated_data)
需要将外键设置为数字格式的,然后将id对应的值删除,取出id,然后在将id进行单独的添加
使用序列化器进行更改操作:
def update(self, instance, validated_data):#validated_data是新的数据,instance是查询的修改函数
#对数据进行查询以后的赋值操作
instance.name = validated_data.get("name",instance.name)#如果说没有串过来name我们不能让它为空,让它为原来的值
instance.age = validated_data.get("age", instance.age)
instance.height = validated_data.get("height", instance.height)
instance.cls_id = validated_data.get("cls", instance.cls_id)
instance.save()
return instance
validated_data是前端添加的数据
instance我们先查询后过滤过来的数据
instance.name = validated_data.get("name",instance.name)
这句话是说我们将查询过滤后得到的数据里的name进行赋值,将我们输入进来的数据赋值到我们查询过滤后得到的那个数据集,最后将其返回
最后保存我们修改后的数据集instance,讲其返回
分页:
首先导入我们的分页的包:
from rest_framework.pagination import PageNumberPagination
创建分页的视图类:
并且使用PageNumberPagination,
对每页的数据条数进行命名
例:
class PageView(PageNumberPagination):
page_size_query_param = 'max_number'
在展示的视图类里如何导入我们的分页器:
1.导入分页器
2.获取我们要展示数据的数据集
3.对我们的数据集使用分页器:request必须要有,如果没有则会报错
page_obj = PageView()
user_obj = UserModel.objects.all()
page_page_obj = page_obj.paginate_queryset(user_obj,request)
4.将分页后的数据集进行序列化
5.展示