您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – Django REST Framework中的camelCase POST数据

5b51 2022/1/14 8:23:35 python 字数 2953 阅读 623 来源 www.jb51.cc/python

我看到有一个名为djangorestframework-camel-case的项目,允许在Django REST序列化程序中使用带有下划线字段的JavaScript-ish camelCase.所以,基本上,我可以发送:{ 'camelCase': 'foo' } 并使用以下Serializer接收它:class MySerializer(seria

概述

我看到有一个名为djangorestframework-camel-case的项目,允许在Django REST序列化程序中使用带有下划线字段的JavaScript-ish camelCase.所以,基本上,我可以发送:

{
    "camelCase": "foo"
}

并使用以下Serializer接收它:

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之后,虽然实际打印了初始化,但解析不是.所以看来,在POST数据的情况下,根本不使用application / x-www-form-urlencoded解析器.

由于Serializers的使用方式如下:

Serializer(data=request.data)

我正在考虑继承Serializer并在进一步处理之前修改数据,甚至在创建Serializer之前修改它.但我要求的是一种更方便的方法,适用于所有的Serializers,而无需对它们进行子类化.

from djangorestframework_camel_case.util import underscoreize
from rest_framework import parsers
from django.conf import settings
from django.http import QueryDict


class CamelCaseFormParser(parsers.FormParser):
    def parse(self,parser_context=None):
        parser_context = parser_context or {}
        encoding = parser_context.get('encoding',settings.DEFAULT_CHARSET)
        data = QueryDict(stream.read(),encoding=encoding)
        return underscoreize(data)

简单,工作和正确放置……

总结

以上是编程之家为你收集整理的python – Django REST Framework中的camelCase POST数据全部内容,希望文章能够帮你解决python – Django REST Framework中的camelCase POST数据所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶