小驼峰和下划线转换函数

# coding:utf-8
import re


def hump2underline(hunp_str):
p = re.compile(r'([a-z]|\d)([A-Z])')
sub = re.sub(p, r'\1_\2', hunp_str).lower()
return sub


def underline2hump(underline_str):
sub = re.sub(r'(_\w)', lambda x: x.group(1)[1].upper(), underline_str)
return sub


def underline_dict(params):
new_params = params
if isinstance(params, dict):
new_params = {}
for k, v in params.items():
new_params[hump2underline(k)] = underline_dict(params[k])
elif isinstance(params, list):
new_params = []
for param in params:
new_params.append(underline_dict(param))
return new_params


def camel_dict(params):
new_params = params
if isinstance(params, dict):
new_params = {}
for k, v in params.items():
new_params[underline2hump(k)] = camel_dict(params[k])
elif isinstance(params, list):
new_params = []
for param in params:
new_params.append(camel_dict(param))
return new_params


中间件

from django.utils.deprecation import MiddlewareMixin
import json

from utils import format_conversion


class FormatMiddleware(MiddlewareMixin):
def process_request(self, request):
if request.method == "GET":
request_data = format_conversion.underline_dict(request.GET)
request.GET = request_data
elif request.method == "POST" or request.method == "DELETE":
req_body = json.loads(request.body.decode('utf-8'))
request_data = format_conversion.underline_dict(req_body)
request._body = json.dumps(request_data).encode('utf-8')
return None

def process_response(self, request, response):
if response.status_code == 200:
try:
response_data = format_conversion.camel_dict(response.data.get('result'))
response.data['result'] = response_data
response._is_rendered = False
response.render()
except Exception as e:
print(e)
return response

相关文章:

  • 2022-12-23
  • 2021-06-26
  • 2021-08-08
  • 2022-02-09
  • 2022-12-23
  • 2021-07-10
  • 2022-12-23
  • 2021-08-25
猜你喜欢
  • 2022-12-23
  • 2021-09-27
  • 2022-12-23
  • 2022-01-21
  • 2021-10-20
  • 2021-10-02
相关资源
相似解决方案