使用现有的ModelSerializer和JSONResponse

花费代码

我有一个不使用视图集的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 })

我可以将fieldskwarg传递给serialize()但如果不需要我不想重复自己。那么TwitterSerializer在这种情况下可以重新使用我的吗?我很难找到直接的答案,因为大多数文档都假设您可以理解,在使用序列化程序时将使用ViewSet,这感觉就像是一个极端的情况。我也欢迎重构这种方法的建议!

穆罕默德·哈桑(Muhammad Hassan)

序列化后,您可以使用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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用和运行现有的yeoman项目?

来自分类Dev

如何识别和使用现有的光纤安装?

来自分类Dev

使用现有的数据库和表与Sinatra和Datamapper?

来自分类Dev

对现有的wordpress实例使用grunt

来自分类Dev

使用现有的virtualenv配置PyCharm

来自分类Dev

使用GPG签署现有的提交

来自分类Dev

使用CDK获取现有的CfnDBCluster

来自分类Dev

使用现有的列作为索引

来自分类Dev

如何使用稍后使用html和/或css计算的值替换现有的html val?

来自分类Dev

如何使用稍后使用html和/或css计算的值替换现有的html val?

来自分类Dev

使用python(和matplotlib?)将页面附加到现有的pdf文件中

来自分类Dev

使用jQuery和PHP更改现有的CSS类属性

来自分类Dev

是否可以在现有的ASPNET.Core Web项目中调用和/或使用Worker Service?

来自分类Dev

更新堆栈时使用现有的DBUser和DBPassword参数值

来自分类Dev

我可以在WordPress中使用现有的HTML和CSS代码吗?

来自分类Dev

使用现有的Grunt项目-获得JSHint缺少分号和错误

来自分类Dev

使用python(和matplotlib?)将页面附加到现有的pdf文件中

来自分类Dev

结合使用Android Studio和现有的Android SDK工具

来自分类Dev

使用现有的中间 CA 密钥和证书与 keytool 生成客户端证书

来自分类Dev

我可以使用任何现有的 Youtube API 访问和修改评论吗?

来自分类Dev

使用简单的映射和过滤器 es6 过滤现有的对象数组

来自分类Dev

如何使用现有的环境变量和库运行 at 命令?

来自分类Dev

如何使用 NSCoding 向现有的键控档案添加新的键和值

来自分类Dev

使用 openxml 和 C# 更新现有的 Excel 工作表

来自分类Dev

如何使现有的列主键和SQL自动增加?

来自分类Dev

MongoDB MMS监视和备份现有的mongo实例

来自分类Dev

添加和删除图形中现有的边(BOOST)?

来自分类Dev

重新打包和/或修改现有的Firefox扩展XPI

来自分类Dev

ElasticSearch和现有的MySQL数据库

Related 相关文章

  1. 1

    如何使用和运行现有的yeoman项目?

  2. 2

    如何识别和使用现有的光纤安装?

  3. 3

    使用现有的数据库和表与Sinatra和Datamapper?

  4. 4

    对现有的wordpress实例使用grunt

  5. 5

    使用现有的virtualenv配置PyCharm

  6. 6

    使用GPG签署现有的提交

  7. 7

    使用CDK获取现有的CfnDBCluster

  8. 8

    使用现有的列作为索引

  9. 9

    如何使用稍后使用html和/或css计算的值替换现有的html val?

  10. 10

    如何使用稍后使用html和/或css计算的值替换现有的html val?

  11. 11

    使用python(和matplotlib?)将页面附加到现有的pdf文件中

  12. 12

    使用jQuery和PHP更改现有的CSS类属性

  13. 13

    是否可以在现有的ASPNET.Core Web项目中调用和/或使用Worker Service?

  14. 14

    更新堆栈时使用现有的DBUser和DBPassword参数值

  15. 15

    我可以在WordPress中使用现有的HTML和CSS代码吗?

  16. 16

    使用现有的Grunt项目-获得JSHint缺少分号和错误

  17. 17

    使用python(和matplotlib?)将页面附加到现有的pdf文件中

  18. 18

    结合使用Android Studio和现有的Android SDK工具

  19. 19

    使用现有的中间 CA 密钥和证书与 keytool 生成客户端证书

  20. 20

    我可以使用任何现有的 Youtube API 访问和修改评论吗?

  21. 21

    使用简单的映射和过滤器 es6 过滤现有的对象数组

  22. 22

    如何使用现有的环境变量和库运行 at 命令?

  23. 23

    如何使用 NSCoding 向现有的键控档案添加新的键和值

  24. 24

    使用 openxml 和 C# 更新现有的 Excel 工作表

  25. 25

    如何使现有的列主键和SQL自动增加?

  26. 26

    MongoDB MMS监视和备份现有的mongo实例

  27. 27

    添加和删除图形中现有的边(BOOST)?

  28. 28

    重新打包和/或修改现有的Firefox扩展XPI

  29. 29

    ElasticSearch和现有的MySQL数据库

热门标签

归档