MCPcopy
hub / github.com/encode/starlette / Jinja2Templates

Class Jinja2Templates

starlette/templating.py:54–156  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

52
53
54class 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

Calls

no outgoing calls