| 29 | |
| 30 | |
| 31 | class _TemplateResponse(HTMLResponse): |
| 32 | def __init__( |
| 33 | self, |
| 34 | template: Any, |
| 35 | context: dict[str, Any], |
| 36 | status_code: int = 200, |
| 37 | headers: Mapping[str, str] | None = None, |
| 38 | media_type: str | None = None, |
| 39 | background: BackgroundTask | None = None, |
| 40 | ): |
| 41 | self.template = template |
| 42 | self.context = context |
| 43 | content = template.render(context) |
| 44 | super().__init__(content, status_code, headers, media_type, background) |
| 45 | |
| 46 | async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None: |
| 47 | request = self.context.get("request", {}) |
| 48 | extensions = request.get("extensions", {}) |
| 49 | if "http.response.debug" in extensions: # pragma: no branch |
| 50 | await send({"type": "http.response.debug", "info": {"template": self.template, "context": self.context}}) |
| 51 | await super().__call__(scope, receive, send) |
| 52 | |
| 53 | |
| 54 | class Jinja2Templates: |