26 lines
781 B
Python

import json
from typing import Any, Mapping, Optional, Type
from django.http import HttpRequest
from ninja.responses import NinjaJSONEncoder
__all__ = ["BaseRenderer", "JSONRenderer"]
class BaseRenderer:
media_type: Optional[str] = None
charset: str = "utf-8"
def render(self, request: HttpRequest, data: Any, *, response_status: int) -> Any:
raise NotImplementedError("Please implement .render() method")
class JSONRenderer(BaseRenderer):
media_type = "application/json"
encoder_class: Type[json.JSONEncoder] = NinjaJSONEncoder
json_dumps_params: Mapping[str, Any] = {}
def render(self, request: HttpRequest, data: Any, *, response_status: int) -> Any:
return json.dumps(data, cls=self.encoder_class, **self.json_dumps_params)