Browse Source

๐ŸŒ Add Korean translation for `docs/ko/docs/advanced/templates.md` (#12726)

pull/13018/head
heum 4 months ago
committed by GitHub
parent
commit
d24a334923
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 127
      docs/ko/docs/advanced/templates.md

127
docs/ko/docs/advanced/templates.md

@ -0,0 +1,127 @@
# ํ…œํ”Œ๋ฆฟ
**FastAPI**์™€ ํ•จ๊ป˜ ์›ํ•˜๋Š” ์–ด๋–ค ํ…œํ”Œ๋ฆฟ ์—”์ง„๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ผ๋ฐ˜์ ์ธ ์„ ํƒ์€ Jinja2๋กœ, Flask์™€ ๋‹ค๋ฅธ ๋„๊ตฌ์—์„œ๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
์„ค์ •์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ **FastAPI** ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(Starlette ์ œ๊ณต).
## ์˜์กด์„ฑ ์„ค์น˜
๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜๊ณ (virtual environment{.internal-link target=_blank}), ํ™œ์„ฑํ™”ํ•œ ํ›„ jinja2๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
<div class="termy">
```console
$ pip install jinja2
---> 100%
```
</div>
## ์‚ฌ์šฉํ•˜๊ธฐ `Jinja2Templates`
* `Jinja2Templates`๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
* ๋‚˜์ค‘์— ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” `templates` ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
* ํ…œํ”Œ๋ฆฟ์„ ๋ฐ˜ํ™˜ํ•  ๊ฒฝ๋กœ ์ž‘์—…์— `Request` ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.
* ์ƒ์„ฑํ•œ `templates`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ `TemplateResponse`๋ฅผ ๋ Œ๋”๋งํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ์˜ ์ด๋ฆ„, ์š”์ฒญ ๊ฐ์ฒด ๋ฐ Jinja2 ํ…œํ”Œ๋ฆฟ ๋‚ด์—์„œ ์‚ฌ์šฉ๋  ํ‚ค-๊ฐ’ ์Œ์ด ํฌํ•จ๋œ "์ปจํ…์ŠคํŠธ" ๋”•์…”๋„ˆ๋ฆฌ๋„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
```Python hl_lines="4 11 15-18"
{!../../docs_src/templates/tutorial001.py!}
```
/// note | ์ฐธ๊ณ 
FastAPI 0.108.0 ์ด์ „๊ณผ Starlette 0.29.0์—์„œ๋Š” `name`์ด ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜์˜€์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ์ด์ „ ๋ฒ„์ „์—์„œ๋Š” `request` ๊ฐ์ฒด๊ฐ€ Jinja2์˜ ์ปจํ…์ŠคํŠธ์—์„œ ํ‚ค-๊ฐ’ ์Œ์˜ ์ผ๋ถ€๋กœ ์ „๋‹ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
///
/// tip | ํŒ
`response_class=HTMLResponse`๋ฅผ ์„ ์–ธํ•˜๋ฉด ๋ฌธ์„œ UI ์‘๋‹ต์ด HTML์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
///
/// note | ๊ธฐ์ˆ  ์„ธ๋ถ€ ์‚ฌํ•ญ
`from starlette.templating import Jinja2Templates`๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
**FastAPI**๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํŽธ๋ฆฌํ•จ์œผ๋กœ `fastapi.templating` ๋Œ€์‹  `starlette.templating`์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์‘๋‹ต์€ Starlette์—์„œ ์ง์ ‘ ์˜ต๋‹ˆ๋‹ค. `Request` ๋ฐ `StaticFiles`๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.
///
## ํ…œํ”Œ๋ฆฟ ์ž‘์„ฑํ•˜๊ธฐ
๊ทธ๋Ÿฐ ๋‹ค์Œ `templates/item.html`์— ํ…œํ”Œ๋ฆฟ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด:
```jinja hl_lines="7"
{!../../docs_src/templates/templates/item.html!}
```
### ํ…œํ”Œ๋ฆฟ ์ปจํ…์ŠคํŠธ ๊ฐ’
๋‹ค์Œ๊ณผ ๊ฐ™์€ HTML์—์„œ:
{% raw %}
```jinja
Item ID: {{ id }}
```
{% endraw %}
...์ด๋Š” ์ „๋‹ฌํ•œ "์ปจํ…์ŠคํŠธ" `dict`์—์„œ ๊ฐ€์ ธ์˜จ `id`๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค:
```Python
{"id": id}
```
์˜ˆ๋ฅผ ๋“ค์–ด, ID๊ฐ€ `42`์ผ ๊ฒฝ์šฐ, ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค:
```html
Item ID: 42
```
### ํ…œํ”Œ๋ฆฟ `url_for` ์ธ์ˆ˜
ํ…œํ”Œ๋ฆฟ ๋‚ด์—์„œ `url_for()`๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ์ด๋Š” *๊ฒฝ๋กœ ์ž‘์—… ํ•จ์ˆ˜*์—์„œ ์‚ฌ์šฉ๋  ์ธ์ˆ˜์™€ ๋™์ผํ•œ ์ธ์ˆ˜๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ถ€๋ถ„์—์„œ:
{% raw %}
```jinja
<a href="{{ url_for('read_item', id=id) }}">
```
{% endraw %}
...์ด๋Š” *๊ฒฝ๋กœ ์ž‘์—… ํ•จ์ˆ˜* `read_item(id=id)`๊ฐ€ ์ฒ˜๋ฆฌํ•  ๋™์ผํ•œ URL๋กœ ๋งํฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ID๊ฐ€ `42`์ผ ๊ฒฝ์šฐ, ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค:
```html
<a href="/items/42">
```
## ํ…œํ”Œ๋ฆฟ๊ณผ ์ •์  ํŒŒ์ผ
ํ…œํ”Œ๋ฆฟ ๋‚ด์—์„œ `url_for()`๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์˜ˆ๋ฅผ ๋“ค์–ด `name="static"`์œผ๋กœ ๋งˆ์šดํŠธํ•œ `StaticFiles`์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
```jinja hl_lines="4"
{!../../docs_src/templates/templates/item.html!}
```
์ด ์˜ˆ์ œ์—์„œ๋Š” `static/styles.css`์— ์žˆ๋Š” CSS ํŒŒ์ผ์— ์—ฐ๊ฒฐ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค:
```CSS hl_lines="4"
{!../../docs_src/templates/static/styles.css!}
```
๊ทธ๋ฆฌ๊ณ  `StaticFiles`๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ, ํ•ด๋‹น CSS ํŒŒ์ผ์€ **FastAPI** ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ `/static/styles.css` URL๋กœ ์ž๋™ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
## ๋” ๋งŽ์€ ์„ธ๋ถ€ ์‚ฌํ•ญ
ํ…œํ”Œ๋ฆฟ ํ…Œ์ŠคํŠธ๋ฅผ ํฌํ•จํ•œ ๋” ๋งŽ์€ ์„ธ๋ถ€ ์‚ฌํ•ญ์€ <a href="https://www.starlette.io/templates/" class="external-link" target="_blank">Starlette์˜ ํ…œํ”Œ๋ฆฟ ๋ฌธ์„œ</a>๋ฅผ ํ™•์ธํ•˜์„ธ์š”.
Loadingโ€ฆ
Cancel
Save