首页 > 解决方案 > 如何使用带有 DRF 序列化程序的 camelCase 属性生成有效负载

问题描述

所以我需要使用一个 API,JSON 字段都是 camelCase,我想在我的代码中将它们写为snake_case。我怎样才能做到这一点?

我想要这样的东西:

serializer = MySerializer(data={'my_field': 'test'})
if serializer.is_valid():
  output_data = serializer.validated_data
  print(output_data)
  # {'myField': 'test'}

标签: jsondjangodjango-rest-frameworkserialization

解决方案


Vitaly Babiy 的 djangorestframework-camel-case 正是这样做的:https ://github.com/vbabiy/djangorestframework-camel-case 您只需在 settings.py 中提及它,如下所示:

REST_FRAMEWORK = {

    'DEFAULT_RENDERER_CLASSES': (
        'djangorestframework_camel_case.render.CamelCaseJSONRenderer',
        'djangorestframework_camel_case.render.CamelCaseBrowsableAPIRenderer',
        # Any other renders
    ),

    'DEFAULT_PARSER_CLASSES': (
        # If you use MultiPartFormParser or FormParser, we also have a camel case version
        'djangorestframework_camel_case.parser.CamelCaseFormParser',
        'djangorestframework_camel_case.parser.CamelCaseMultiPartParser',
        'djangorestframework_camel_case.parser.CamelCaseJSONParser',
        # Any other parsers
    ),
}

它可以工作,无需更改您的序列化程序。


推荐阅读