]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
🌐 Add Korean translation for `docs/ko/docs/advanced/templates.md` (#12726)
authorheum <jdh6983@naver.com>
Mon, 9 Dec 2024 13:07:23 +0000 (22:07 +0900)
committerGitHub <noreply@github.com>
Mon, 9 Dec 2024 13:07:23 +0000 (13:07 +0000)
docs/ko/docs/advanced/templates.md [new file with mode: 0644]

diff --git a/docs/ko/docs/advanced/templates.md b/docs/ko/docs/advanced/templates.md
new file mode 100644 (file)
index 0000000..4cb4cbe
--- /dev/null
@@ -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>λ₯Ό ν™•μΈν•˜μ„Έμš”.