todo: drf render 駝峯<->下劃線

背景

  • py後端. 下劃線

  • 其他方. 駝峯

  • py 給 前端響應 HumJSONRenderer

  • py 接收 前端請求 SnakeJSONParser

drf parser .

  • JSONParser
  • HumJSONParser(駝峯格式)
  • UnderLineJSONParser(下滑格式)
  • SnakeJSONParser(解析駝峯Json到python的下劃線json)

parser.py

class SnakeJSONParser(JSONParser):
    def parse(self, stream, media_type=None, parser_context=None):
        parser_context = parser_context or {}
        # utf-8
        encoding = parser_context.get('encoding', settings.DEFAULT_CHARSET)
        try:
            data = stream.read().decode(encoding)
            data_str = json_hump2underline(data)
            return json.loads(data_str)
        except ValueError as exc:
            raise ParseError('JSON parse error - %s' % six.text_type(exc))

drf render 改寫.

  • JSONRenderer
  • HumJSONRenderer(駝峯格式)
  • UnderLineJSONRenderer(下滑格式)

駝峯JsonResponse

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
doc:
"""
from rest_framework.renderers import JSONRenderer

from tools import (
    underline2hump,
)


class HumJSONRenderer(JSONRenderer):
    def render(self, data, accepted_media_type=None, renderer_context=None):
        resp = super(HumJSONRenderer, self).render(
            data, accepted_media_type=accepted_media_type,
            renderer_context=renderer_context
        )
        resp_hump = underline2hump(resp)
        return resp_hump

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章