django写接口状态码封装,有更好的方案?-灵析社区

古典研发君

import json from enum import Enum class Status(Enum): SUCCESS = (200000, 'success') NO_AUTH = (300001, 'No authorization!') class Utils: @staticmethod def json_dumps(res: Status, data): return json.dumps({'code': res.value[0], 'data': data, 'info': res.value[0]}) print(Utils.json_dumps(Status.SUCCESS, {'age': 100}))

阅读量:23

点赞量:0

问AI
import json from enum import Enum from dataclasses import dataclass, asdict from typing import Any @dataclass class StatusItem: code: int msg: str class Status(Enum): SUCCESS = StatusItem(200000, "success") NO_AUTH = StatusItem(300001, "No authorization!") class EnumEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, Status): return asdict(obj.value) return json.JSONEncoder.default(self, obj) @dataclass class Response: status: Status data: Any def json(self) -> str: return json.dumps(asdict(self), cls=EnumEncoder) print(Response(Status.SUCCESS, {"age": 100}).json()) 之后的所有响应都直接调用"json()"方法即可。
,
在您提供的代码中,有几个问题需要解决: 1. "Status"枚举类中的"NO_AUTH"值字符串没有正确闭合。 2. "json_dumps"方法中的"json.dumps"调用存在语法错误。 3. 在"json.dumps"调用中,"f'code': res.value"不是有效的字典格式。 以下是修正后的代码: python import json from enum import Enum class Status(Enum): SUCCESS = (200000, 'success') NO_AUTH = (300001, 'No authorization') class Utils: @staticmethod def json_dumps(res: Status, data): # 使用字典格式,并确保字符串正确闭合 response = { 'code': res.value[0], 'message': res.value[1], 'data': data } return json.dumps(response) 示例使用 print(Utils.json_dumps(Status.SUCCESS, {'age': 25})) 这段代码定义了一个枚举类"Status",包含两个枚举值"SUCCESS"和"NO_AUTH",每个值都有一个元组,包含状态码和消息。"Utils"类中的"json_dumps"静态方法接受一个"Status"枚举值和一个数据对象,然后构建一个响应字典,并使用"json.dumps"将其转换为JSON格式的字符串。最后,示例调用"Utils.json_dumps"方法,并打印结果。