# ๐Ÿ“„ ๐Ÿ‘† ๐Ÿ’ช โš™๏ธ ๐Ÿ™† ๐Ÿ“„ ๐Ÿš’ ๐Ÿ‘† ๐Ÿ’š โฎ๏ธ **FastAPI**. โš  โš’ Jinja2๏ธโƒฃ, ๐ŸŽ 1๏ธโƒฃ โš™๏ธ ๐Ÿบ & ๐ŸŽ ๐Ÿงฐ. ๐Ÿ“ค ๐Ÿš™ ๐Ÿ”— โšซ๏ธ ๐Ÿ’ช ๐Ÿ‘ˆ ๐Ÿ‘† ๐Ÿ’ช โš™๏ธ ๐Ÿ”— ๐Ÿ‘† **FastAPI** ๐Ÿˆธ (๐Ÿšš ๐Ÿ’ƒ). ## โŽ ๐Ÿ”— โŽ `jinja2`:
```console $ pip install jinja2 ---> 100% ```
## โš™๏ธ `Jinja2Templates` * ๐Ÿ—„ `Jinja2Templates`. * โœ `templates` ๐ŸŽš ๐Ÿ‘ˆ ๐Ÿ‘† ๐Ÿ’ช ๐Ÿค-โš™๏ธ โช. * ๐Ÿ“ฃ `Request` ๐Ÿ”ข *โžก ๐Ÿ› ๏ธ* ๐Ÿ‘ˆ ๐Ÿ”œ ๐Ÿ“จ ๐Ÿ“„. * โš™๏ธ `templates` ๐Ÿ‘† โœ โœ & ๐Ÿ“จ `TemplateResponse`, ๐Ÿšถโ€โ™€๏ธ `request` 1๏ธโƒฃ ๐Ÿ”‘-๐Ÿ’ฒ ๐Ÿ‘ซ Jinja2๏ธโƒฃ "๐Ÿ”‘". {* ../../docs_src/templates/tutorial001.py hl[4,11,15:18] *} /// note ๐Ÿ‘€ ๐Ÿ‘ˆ ๐Ÿ‘† โœ”๏ธ ๐Ÿšถโ€โ™€๏ธ `request` ๐Ÿ• ๐Ÿ”‘-๐Ÿ’ฒ ๐Ÿ‘ซ ๐Ÿ”‘ Jinja2๏ธโƒฃ. , ๐Ÿ‘† โœ”๏ธ ๐Ÿ“ฃ โšซ๏ธ ๐Ÿ‘† *โžก ๐Ÿ› ๏ธ*. /// /// tip ๐Ÿ“ฃ `response_class=HTMLResponse` ๐Ÿฉบ ๐ŸŽš ๐Ÿ”œ ๐Ÿ’ช ๐Ÿ’ญ ๐Ÿ‘ˆ ๐Ÿ“จ ๐Ÿ”œ ๐Ÿ•ธ. /// /// note | ๐Ÿ“ก โ„น ๐Ÿ‘† ๐Ÿ’ช โš™๏ธ `from starlette.templating import Jinja2Templates`. **FastAPI** ๐Ÿšš ๐ŸŽ `starlette.templating` `fastapi.templating` ๐Ÿช ๐Ÿ‘†, ๐Ÿ‘ฉโ€๐Ÿ’ป. โœ‹๏ธ ๐ŸŒ… ๐Ÿ’ช ๐Ÿ“จ ๐Ÿ‘Ÿ ๐Ÿ”— โšช๏ธโžก๏ธ ๐Ÿ’ƒ. ๐ŸŽ โฎ๏ธ `Request` & `StaticFiles`. /// ## โœ ๐Ÿ“„ โคด๏ธ ๐Ÿ‘† ๐Ÿ’ช โœ ๐Ÿ“„ `templates/item.html` โฎ๏ธ: ```jinja hl_lines="7" {!../../docs_src/templates/templates/item.html!} ``` โšซ๏ธ ๐Ÿ”œ ๐ŸŽฆ `id` โœŠ โšช๏ธโžก๏ธ "๐Ÿ”‘" `dict` ๐Ÿ‘† ๐Ÿšถโ€โ™€๏ธ: ```Python {"request": request, "id": id} ``` ## ๐Ÿ“„ & ๐ŸŽป ๐Ÿ“ & ๐Ÿ‘† ๐Ÿ’ช โš™๏ธ `url_for()` ๐Ÿ”˜ ๐Ÿ“„, & โš™๏ธ โšซ๏ธ, ๐Ÿ–ผ, โฎ๏ธ `StaticFiles` ๐Ÿ‘† ๐Ÿ“Œ. ```jinja hl_lines="4" {!../../docs_src/templates/templates/item.html!} ``` ๐Ÿ‘‰ ๐Ÿ–ผ, โšซ๏ธ ๐Ÿ”œ ๐Ÿ”— ๐ŸŽš ๐Ÿ“ `static/styles.css` โฎ๏ธ: ```CSS hl_lines="4" {!../../docs_src/templates/static/styles.css!} ``` & โ†ฉ๏ธ ๐Ÿ‘† โš™๏ธ `StaticFiles`, ๐Ÿ‘ˆ ๐ŸŽš ๐Ÿ“ ๐Ÿ”œ ๐Ÿฆ ๐Ÿ” ๐Ÿ‘† **FastAPI** ๐Ÿˆธ ๐Ÿ“› `/static/styles.css`. ## ๐ŸŒ… โ„น ๐ŸŒ… โ„น, ๐Ÿ”Œ โ” ๐Ÿ’ฏ ๐Ÿ“„, โœ… ๐Ÿ’ƒ ๐Ÿฉบ ๐Ÿ”› ๐Ÿ“„.