from typing import Optional, TypeVar, Generic from ninja import Schema T = TypeVar('T') class CommonResponse(Schema, Generic[T]): code: int msg: Optional[str] data: Optional[T] = None succeed: bool = True """ 统一的json返回格式 """ def __init__(self, code: int = 0, data: object = None, msg: str = '', succeed: bool = True): super().__init__(code=code, data=data, msg=msg, succeed=succeed) @classmethod def success(cls, code=0, data=None, msg=''): return cls(code, data, msg, succeed=True) @classmethod def error(cls, code=-1, data=None, msg=''): return cls(code, data, msg, succeed=False) def to_dict(self): return { "code": self.code, "msg": self.msg, "data": self.data, "succeed": self.succeed, } class DotDict(dict): """实现支持 "." 表示法的字典类""" def __getattr__(self, attr): try: return self[attr] except Exception: return None def __setattr__(self, attr, value): self[attr] = value