"'%s' should either include a `serializer_class` attribute, " "or override the `get_serializer_class()` method." % self.__class__.__name__ ) returnself.serializer_class #这里设置了上下文 defget_serializer_context(self): """ Extra context provided to the serializer class. """ return{...
""" serializer_class=self.get_serializer_class() kwargs.setdefault('context',self.get_serializer_context()) returnserializer_class(*args,**kwargs) 所以,在serializer中进行校验时,可以通过self.context['request']来获取到request对象 1 2 3 4 5 6 7 8 9 ... defvalidate_topic(self,value): if...
在视图继承viewset后,我们只能对序列化类做一个声明,但是在实际创建序列化实例时,会帮我们将rquest参数传递到实列中,可以使用self.context来获取. 源码分析: 从BaseSerializer中: class BaseSerializer(Field): """ The BaseSerializer class provides a minimal class which may be used for writing...
get_serializer(self, args, *kwargs) 如果我们在View中,想要获取serializer instance,可以直接调用此方法。 get_serializer_context(self) 创建request、format、view三个数据对象,作为serializer实例化时的context属性; defget_serializer(self,*args,**kwargs): """ Return the serializer instance that should be ...
input, and for serializing output.翻译:返回用于序列化/反序列化的序列化器"""serializer_class=self.get_serializer_class()# 就是我们类定义的serializer_classkwargs.setdefault('context',self.get_serializer_context())returnserializer_class(*args,**kwargs)# 最后把我们传入的参数又传入进了serializer_...
`get_serializer_class()` method."%self.__class__.__name__)returnself.serializer_classdefget_serializer_context(self):"""Extra context provided to the serializer class."""return{'request':self.request,'format':self.format_kwarg,'view':self}"""让我们省略其他代码,专注于get_serializer的实现"...
class BaseSerializer(Field): def __init__(self, instance=None, data=empty, **kwargs): self.instance = instance if data is not empty: self.initial_data = data self.partial = kwargs.pop('partial', False) self._context = kwargs.pop('context', {}) ...
2. Serializer类 Serializer类的构造方法: StudentSerializer(instance=None,data=empty,**kwargs) 说明: 用于序列化时,将模型类对象传入instance参数; 用于反序列化时,将要被反序列化的数据传入data参数 除了instance和data参数外,在构造Serializer对象时,还可以通过context参数额外添加数据,通过context添加的数据,可以通过...
@api_view(['GET','POST']) 使用了状态码标识符,如: 代码语言:javascript 复制 status.HTTP_404_NOT_FOUND 使用request.data替代了data = JSONParser().parse(request),如: 代码语言:javascript 复制 serializer=SnippetSerializer(data=request.data)
-`get_serializer(self, args, *kwargs)` - 返回序列化器对象, 被其他视图或扩展类使用, 如果我们在视图中想要获取序列化器对象, 可以直接调用此方法。 - 注意!在提供序列化器对象的时候, REST framework会向对象的context属性补充三个数据:request、format、view,这三个数据对象可以在定义序列化器时使用。