import datetime
import decimal
import json
from django.http import HttpResponse
from django.conf import settings
class DateEncoder(json.JSONEncoder):
def default(self, obj):
# 处理返回数据中有date类型的数据
if isinstance(obj, datetime.date):
return obj.strftime("%Y-%m-%d")
# 处理返回数据中有datetime类型的数据
elif isinstance(obj, datetime.datetime):
return obj.strftime("%Y-%m-%d %H:%M:%S")
# 处理返回数据中有decimal类型的数据
elif isinstance(obj, decimal.Decimal):
return float(obj)
else:
return json.JSONEncoder.default(self, obj)
def render_json(data=None, code=0, msg='成功'):
'''前后端接口定义'''
result = {
'data': data,
'code': code,
'msg': msg
}
if settings.DEBUG == True:
# 调试时,将 json 数据转成带缩进的格式
json_str = json.dumps(result, ensure_ascii=False, indent=4, sort_keys=True, cls=DateEncoder)
else:
# 线上环境,将返回值转成紧凑格式
json_str = json.dumps(result, ensure_ascii=False, separators=(',', ':'), cls=DateEncoder)
return HttpResponse(json_str, content_type='application/json')