Python 通行证;选项“;对序列化程序进行测试
Tastypie序列化程序和自定义序列化程序的文档显示了默认为Python 通行证;选项“;对序列化程序进行测试,python,django,tastypie,Python,Django,Tastypie,Tastypie序列化程序和自定义序列化程序的文档显示了默认为None的选项: to_json(self, data, options=None): options = options or {} 但是下游代码似乎并没有利用它,而是将它传递给到\u simple(),后者也不使用它。也没有说明如何将选项传递给这些函数的文档。我希望能够在这里传递选项,以便调整序列化程序的工作方式。例如,我们有引用GridFS中数据的内容。我想做一些类似的事情: /api/v1/foo/?format=c
None
的选项:
to_json(self, data, options=None):
options = options or {}
但是下游代码似乎并没有利用它,而是将它传递给到\u simple()
,后者也不使用它。也没有说明如何将选项传递给这些函数的文档。我希望能够在这里传递选项,以便调整序列化程序的工作方式。例如,我们有引用GridFS中数据的内容。我想做一些类似的事情:
/api/v1/foo/?format=custom&gridfs=1
并有以下几点:
to_custom(self, data, options=None):
options = options or {}
if options and 'gridfs' in options:
...
我认为您需要实现自己的序列化程序,如下所述:
您还需要覆盖资源中的create\u response
函数,该函数调用serialize
:
您可以在这里打开pass-inoptions
进行序列化,这将向下传播。例如:
def create_response(self, request, data, response_class=HttpResponse, **response_kwargs):
"""
Extracts the common "which-format/serialize/return-response" cycle.
Mostly a useful shortcut/hook.
"""
desired_format = self.determine_format(request)
serialized = self.serialize(request, data, desired_format, options=request.GET)
return response_class(content=serialized, content_type=build_content_type(desired_format), **response_kwargs
为了完整性,这里的错误响应中也调用了
serialize:我实现了一个自定义的。这不是关于制作一个定制的,而是关于如何将“选项”传递给它们。您会注意到,在您链接的示例中,它们将“选项”传递到to_json()函数中,但该函数未被使用,并且始终为空。我想知道如何传递选项,以便可以根据使用它们的API调用更改自定义序列化程序中的to*()函数。啊,我明白了,我更新了上面的答案,并提供了一些关于如何将“选项”传播到serialize方法以及如何将“选项”作为请求的查询参数的详细信息!天才和学者!就像广告宣传的那样!现在我只需要创建自己的资源,这样我就可以继承它,而不是到处复制create\u响应!