Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将现有ModelSerializer与JSONResponse一起使用_Python_Django_Django Rest Framework - Fatal编程技术网

Python 将现有ModelSerializer与JSONResponse一起使用

Python 将现有ModelSerializer与JSONResponse一起使用,python,django,django-rest-framework,Python,Django,Django Rest Framework,我有一个不使用视图集的Twitter身份验证视图,因此可以在后端处理身份验证。该视图使用oauth\u令牌&使用Twython获取配置文件并创建Twitter模型 目前,我只在成功时返回status201,但为了减轻创建后对另一个请求的需要,我想返回创建的模型。我已经有了一个TwitterSerializer,它定义了我想要包含的字段,所以如果可能的话,我希望能够重用它 TwitterSerializer class TwitterSerializer(serializers.ModelSeri

我有一个不使用视图集的Twitter身份验证视图,因此可以在后端处理身份验证。该视图使用
oauth\u令牌
&使用Twython获取配置文件并创建Twitter模型

目前,我只在成功时返回status
201
,但为了减轻创建后对另一个请求的需要,我想返回创建的模型。我已经有了一个
TwitterSerializer
,它定义了我想要包含的
字段
,所以如果可能的话,我希望能够重用它

TwitterSerializer

class TwitterSerializer(serializers.ModelSerializer):

    class Meta:
        model = Twitter
        fields = (
            "id",
            "twitter_user_id",
            "screen_name",
            "display_name",
            "profile_image_url",
        )
当我尝试使用它时,我得到的错误是TwitterSerializer的
实例不是JSON可序列化的

            serialized = TwitterSerializer(instance=twitter)
            return JsonResponse({ "created": serialized })
我可以使用
serializers.serialize()


我可以将
字段
kwarg传递给
serialize()
,但如果不需要,我不想重复我自己。那么,在这种情况下是否可以重复使用我的
TwitterSerializer
?我很难找到一个直接的答案,因为大多数文档都假设您在使用RSS时会使用ViewSet,这是可以理解的,这感觉就像是一个边缘案例。我也愿意接受重构这种方法的建议

序列化之后,您可以使用序列化程序的
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 })
from rest_framework response
serialized = TwitterSerializer(instance=twitter)
return response.Response({ "created": serialized.data })