我有一个不使用视图集的Twitter身份验证视图,因此可以在后端处理auth。该视图接受oauth_token
&使用Twython获取个人资料并创建Twitter模型。
目前,我只是返回201
成功状态,但是为了减轻创建后对另一个请求的需求,我想返回创建的模型。我已经有一个TwitterSerializer
定义fields
要包含的,因此,我希望能够在可能的情况下重用它。
Twitter序列化器
class TwitterSerializer(serializers.ModelSerializer):
class Meta:
model = Twitter
fields = (
"id",
"twitter_user_id",
"screen_name",
"display_name",
"profile_image_url",
)
当我尝试使用此功能时,出现错误Instance of TwitterSerializer is not JSON serializable
。
serialized = TwitterSerializer(instance=twitter)
return JsonResponse({ "created": serialized })
我可以使用返回一个模型的序列化实例 serializers.serialize()
serialized = serializers.serialize('json', [twitter, ])
serialized = serialized[0]
return JsonResponse({ "created": serialized })
我可以将fields
kwarg传递给,serialize()
但如果不需要,我不想重复自己。那么TwitterSerializer
在这种情况下可以重新使用我的吗?我很难找到直接的答案,因为大多数文档都假设您可以理解,在使用序列化程序时将使用ViewSet,这感觉就像是一个极端的情况。我也欢迎重构这种方法的建议!
序列化后,您可以使用data
序列化器的属性来获取数据,如下所示。
serialized = TwitterSerializer(instance=twitter)
return JsonResponse({ "created": serialized.data })
您应该使用Django restResponse
而不是JsonResponse
这样
from rest_framework response
serialized = TwitterSerializer(instance=twitter)
return response.Response({ "created": serialized.data })
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句