Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 1 addition & 6 deletions backend/common/response/response_schema.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from datetime import datetime
from typing import Any, Generic, TypeVar

from fastapi import Response
from pydantic import BaseModel, ConfigDict
from pydantic import BaseModel

from backend.common.response.response_code import CustomResponse, CustomResponseCode
from backend.core.conf import settings
from backend.utils.serializers import MsgSpecJSONResponse

SchemaT = TypeVar('SchemaT')
Expand Down Expand Up @@ -35,9 +33,6 @@ def test() -> ResponseModel:
return ResponseModel(code=res.code, msg=res.msg, data={'test': 'test'})
"""

# TODO: json_encoders 配置失效: https://github.com/tiangolo/fastapi/discussions/10252
model_config = ConfigDict(json_encoders={datetime: lambda x: x.strftime(settings.DATETIME_FORMAT)})

code: int = CustomResponseCode.HTTP_200.code
msg: str = CustomResponseCode.HTTP_200.msg
data: Any | None = None
Expand Down
8 changes: 7 additions & 1 deletion backend/common/schema.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from datetime import datetime

from pydantic import BaseModel, ConfigDict, EmailStr, validate_email
from pydantic_extra_types.phone_numbers import PhoneNumber

from backend.core.conf import settings

# 自定义验证错误信息不包含验证预期内容(也就是输入内容),受支持的预期内容字段参考以下链接
# https://github.com/pydantic/pydantic-core/blob/a5cb7382643415b716b1a7a5392914e50f726528/tests/test_errors.py#L266
# 替换预期内容字段方式,参考以下链接
Expand Down Expand Up @@ -150,4 +153,7 @@ def _validate(cls, __input_value: str) -> str:


class SchemaBase(BaseModel):
model_config = ConfigDict(use_enum_values=True)
model_config = ConfigDict(
use_enum_values=True,
json_encoders={datetime: lambda x: x.strftime(settings.DATETIME_FORMAT)},
)