我有一个不使用视图集的Twitter身份验证视图,因此可以在后端处理auth。该视图接受oauth_token
并使用Twython获取配置文件并创建Twitter模型。
当前,我仅在成功时返回状态201
,但是为了减轻创建后对另一个请求的需求,我想返回创建的模型。我已经有一个TwitterSerializer
,它定义了要包含的fields
,所以我希望能够重用它。
TwitterSerializer
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,这感觉就像是一种边缘情况。我也欢迎重构这种方法的建议!
答案 0 :(得分:1)
序列化后,您可以使用序列化器的data
属性来获取数据。
serialized = TwitterSerializer(instance=twitter)
return JsonResponse({ "created": serialized.data })
您应该这样使用Django rest Response
而不是JsonResponse
from rest_framework response
serialized = TwitterSerializer(instance=twitter)
return response.Response({ "created": serialized.data })