【发布时间】:2015-11-14 00:29:25
【问题描述】:
我看到有一个名为 djangorestframework-camel-case 的项目,它允许在 Django REST 序列化程序中使用带有下划线大小写字段的 JavaScript-ish camelCase。所以,基本上,我可以发送:
{
"camelCase": "foo"
}
并使用以下序列化器接收它:
class MySerializer(serializers.Serializer):
session_id = serializers.CharField()
是否存在类似的 POST 数据?所以我可以通过 POST 发送 camelCase=foo 并将其接收到我的序列化程序中的 underscore_case 字段?
我尝试基于 FormParser 实现自己的解析器:
class CamelCaseFormParser(FormParser):
media_type = 'application/x-www-form-urlencoded'
def __init__(self):
print("initialized")
def parse(self, stream, media_type=None, parser_context=None):
print("parse")
...
并且,在将其添加到 settings.py 中的 DEFAULT_PARSER_CLASSES 之后,虽然实际打印了 initialized,但没有打印 parse。因此,对于 POST 数据,似乎根本不使用 application/x-www-form-urlencoded 解析器。
因为序列化器是这样使用的:
Serializer(data=request.data)
我正在考虑继承序列化程序并在进一步处理之前修改data,甚至在创建序列化程序之前对其进行修改。但我要求的是一种更方便的方式,适用于所有序列化程序,而不需要对它们进行子类化。
【问题讨论】:
标签: python django rest django-rest-framework camelcasing