Restful的设计风格,基层序列化器的结构与构成,分页器

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.展示

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值