Jinja2 template renderer. Example: ```python from starlette.templating import Jinja2Templates templates = Jinja2Templates(directory="templates") async def homepage(request: Request) -> Response: return templates.TemplateResponse(request, "index.html
| 52 | |
| 53 | |
| 54 | class Jinja2Templates: |
| 55 | """Jinja2 template renderer. |
| 56 | |
| 57 | Example: |
| 58 | ```python |
| 59 | from starlette.templating import Jinja2Templates |
| 60 | |
| 61 | templates = Jinja2Templates(directory="templates") |
| 62 | |
| 63 | async def homepage(request: Request) -> Response: |
| 64 | return templates.TemplateResponse(request, "index.html") |
| 65 | ``` |
| 66 | """ |
| 67 | |
| 68 | @overload |
| 69 | def __init__( |
| 70 | self, |
| 71 | directory: str | PathLike[str] | Sequence[str | PathLike[str]], |
| 72 | *, |
| 73 | context_processors: list[Callable[[Request], dict[str, Any]]] | None = None, |
| 74 | ) -> None: ... |
| 75 | |
| 76 | @overload |
| 77 | def __init__( |
| 78 | self, |
| 79 | *, |
| 80 | env: jinja2.Environment, |
| 81 | context_processors: list[Callable[[Request], dict[str, Any]]] | None = None, |
| 82 | ) -> None: ... |
| 83 | |
| 84 | def __init__( |
| 85 | self, |
| 86 | directory: str | PathLike[str] | Sequence[str | PathLike[str]] | None = None, |
| 87 | *, |
| 88 | context_processors: list[Callable[[Request], dict[str, Any]]] | None = None, |
| 89 | env: jinja2.Environment | None = None, |
| 90 | ) -> None: |
| 91 | assert bool(directory) ^ bool(env), "either 'directory' or 'env' arguments must be passed" |
| 92 | self.context_processors = context_processors or [] |
| 93 | if directory is not None: |
| 94 | loader = jinja2.FileSystemLoader(directory) |
| 95 | self.env = jinja2.Environment(loader=loader, autoescape=jinja2.select_autoescape()) |
| 96 | elif env is not None: # pragma: no branch |
| 97 | self.env = env |
| 98 | |
| 99 | self._setup_env_defaults(self.env) |
| 100 | |
| 101 | def _setup_env_defaults(self, env: jinja2.Environment) -> None: |
| 102 | @pass_context |
| 103 | def url_for( |
| 104 | context: dict[str, Any], |
| 105 | name: str, |
| 106 | /, |
| 107 | **path_params: Any, |
| 108 | ) -> URL: |
| 109 | request: Request = context["request"] |
| 110 | return request.url_for(name, **path_params) |
| 111 |
no outgoing calls