zoukankan      html  css  js  c++  java
  • drf源码save以及response

    drf源码save以及response

    一.save

    其中蛮重要的一段

            if self.instance is not None:
                self.instance = self.update(self.instance, validated_data)
                assert self.instance is not None, (
                    '`update()` did not return an object instance.'
                )
            else:
                self.instance = self.create(validated_data)
                assert self.instance is not None, (
                    '`create()` did not return an object instance.'
                )
    
            return self.instance
    

    这里呢很明显就可以看出save我们传参instance的由于决定了他后续是运行create还是updata方法

    我们也可以不用save,可以自定义create 方法和updata方法因为他本质就是调用create和updata方法

    注意点:我们自定义优先级必须大于drf自带的方法的优先级,所有我们把这两个方法创建在模型中比较合适

    二.response

    其中的参数

    #传入的参数
    def __init__(self, data=None, status=None,
                     template_name=None, headers=None,
                     exception=False, content_type=None):
        
    #他对于参数进行的赋值
            self.data = data
            self.template_name = template_name
            self.exception = exception
            self.content_type = content_type
    

    我们可以通过类的继承来修改源码

    """
    返回值
    Response({
        'status': 0,
        'msg': 'ok',
        'results': [],
        'token': ''
    }, headers={}, status=200, content_type="")
    """
    '''
    比如说我们想要的效果
    APIResponse(0, 'ok', results,其他数据)
    '''
    
    from rest_framework.response import Response
    class APIResponse(Response):
        def __init__(self, data_status, data_msg, results=None,
                     status=None, headers=None, content_type=None, **kwargs):
            data = {
                'status': data_status,
                'msg': data_msg
            }
            if results is not None:
                data['results'] = results
            data.update(kwargs)
            super().__init__(data=data, status=status, headers=headers, content_type=content_type)
    
  • 相关阅读:
    SG函数(斐波那契博弈) Fibonacci again and again
    poj
    威佐夫博弈
    Java——类的定义
    链队列——出入队列
    Java——写一个求和 “方法”
    巴什博弈 HDU-1846
    链栈——入栈和出栈
    java——基本数据类型
    JAVA——桌球游戏(动画)
  • 原文地址:https://www.cnblogs.com/pythonywy/p/11469915.html
Copyright © 2011-2022 走看看