python 全栈开发,Day96(Django REST framework 视图,django logging配置,django-debug-toolbar使用指南)
1. Serializer(序列化)
    1. ORM对应的query_set和ORM对象转换成JSON格式的数据
        1. 在序列化类中定义自定义的字段:SerializerMethodField
            在类中定义 get_自定义字段名(self, obj)方法
        2. read_only 只在显示(查询)时才会有效。
    
    2. 对前端POST过来的数据做有效性的校验
        1. 一定要将数据以data=的形式传递到序列化类中!!!
            ser_obj = CommentSerializer(data=comment_data) 
        2. 判断数据是否有效
            ser_obj.is_valid():  欠一个源码
            ser_obj.validated_data 中保存经过校验的有效数据
        
        3. 局部钩子
            定义一个validate_字段名(self, value)
        4. 全局钩子
            定义一个validate方法
            
    3. .save()方法将符合要求的数据存入数据库
        1. 本质上还是调用ORM的create()方法
        类名.objects.create(**ser_obj.validated_data)
        
2. 超链接的序列化
    1. 超连接字段的三个参数
    # 文章超链接序列化
    class ArticleHyperLinkedSerializer(serializers.HyperlinkedModelSerializer):
        # view_name参数 默认使用 表名-detail
        # lookup_url_kwarg参数 默认使用pk,指的是反向生成URL的时候 路由中的分组命名匹配的key
        # lookup_field参数 默认使用的pk, 指的是反向生成URL的时候, 路由中分组命名匹配的value
        school = serializers.HyperlinkedIdentityField(
            view_name='school-detail111',
            lookup_url_kwarg='name',
            lookup_field='school_name'
        )
    2. 想要生成完整的超链接API,在序列化的时候还要传入 context={'request': request}
       ser_obj = app01_serializers.ArticleHyperLinkedSerializer(all_article, many=True, context={'request': request})
       1. 想要生成相对路径
            context={'request': None}
View Code

相关文章:

  • 2021-11-06
  • 2022-02-21
  • 2022-12-23
  • 2021-05-18
  • 2021-10-22
猜你喜欢
  • 2021-10-03
  • 2021-11-09
  • 2022-01-01
  • 2021-06-08
  • 2022-12-23
  • 2021-10-23
相关资源
相似解决方案