Source code for flask_mongo_drf.mongo_responses

# responses.py
from typing import Any
from flask import jsonify
from bson import ObjectId
from datetime import datetime, date


def _serialize_deep(obj: Any) -> Any:
    """深度序列化,用于 custom_response 中的额外字段(非 results)"""
    if isinstance(obj, ObjectId):
        return str(obj)
    if isinstance(obj, (datetime, date)):
        return obj.strftime("%Y-%m-%d %H:%M:%S")
    if isinstance(obj, list):
        return [_serialize_deep(item) for item in obj]
    if isinstance(obj, dict):
        return {k: _serialize_deep(v) for k, v in obj.items()}
    return obj


[docs] def custom_response(data=None, total=0, message="success", code=200, **kwargs): response_body = { "code": code, "message": message, "data": data, # data 应该已经是序列化好的(由 Serializer 处理) "total": total, "success": True if 200 <= code < 300 else False } if kwargs: # 对额外字段进行深度序列化 response_body.update(_serialize_deep(kwargs)) return jsonify(response_body), code