Template Language

MoonLightΒ·2021λ…„ 8μ›” 9일
1

django

λͺ©λ‘ 보기
9/20
post-thumbnail

Template Language


πŸ’‘ 화면을 κ΅¬μ„±ν•˜λŠ” Template을 μž‘μ„±ν•  λ•Œ 보닀 νŽΈλ¦¬ν•˜κ²Œ μž‘μ„±ν•  수 μžˆλ„λ‘ λ„μ™€μ£ΌλŠ” μ–Έμ–΄
( ➑ HTMLλ¬Έμ„œλ₯Ό μž‘μ„±ν•  λ•Œ ν”„λ‘œκ·Έλž˜λ°ν•˜λ“― μž‘μ„±ν•  수 있게 ν•΄μ€€λ‹€.)

ν…œν”Œλ¦Ώ μ–Έμ–΄μ—λŠ” 크게 4가지 μ’…λ₯˜κ°€ μžˆλ‹€.

I. ν…œν”Œλ¦Ώ λ³€μˆ˜

{{ λ³€μˆ˜λͺ… }}

  • ν…œν”Œλ¦Ώμ΄ λ Œλ”λ  λ•Œ μš°λ¦¬κ°€ μ§€μ •ν•œ μ˜λ―ΈμžˆλŠ” λ°μ΄ν„°λ‘œ λ³€ν™˜λœλ‹€.
  • viewμ—μ„œ κ°€κ³΅ν•œ 데이터 ➑ template으둜 μ›ν•˜λŠ” 데이터λ₯Ό μ „λ‹¬ν•˜κ³ , template은 ν…œν”Œλ¦Ώ λ³€μˆ˜λ₯Ό μ΄μš©ν•΄μ„œ 전달받은 데이터λ₯Ό μ‚¬μš©ν•œλ‹€.

{{ λ³€μˆ˜λͺ….속성 }}

  • ν…œν”Œλ¦Ώ λ³€μˆ˜λŠ” 점(.)μ—°μ‚°μžλ₯Ό μ§€μ›ν•˜λŠ”λ°, 이 μ—°μ‚°μžλŠ” ν…œν”Œλ¦Ώ λ‚΄λΆ€λ³€μˆ˜ 속성에 μ ‘κ·Όν•  λ•Œ μ‚¬μš©ν•œλ‹€.
  • 예)
    • μœ„μ™€ 같이 λ³€μˆ˜κ°€ μžˆμ„ λ•Œ 점(.)μ—°μ‚°μžλ‘œ 내뢀속성인 key에 μ ‘κ·Όν•  λ•Œ μ‚¬μš©κ°€λŠ₯ν•˜λ‹€.
      • λ³€μˆ˜λŠ” λ”•μ…”λ„ˆλ¦¬ μžλ£Œν˜•λΏλ§Œ μ•„λ‹ˆλΌ, 객체, 리슀트 등도 μ‚¬μš©κ°€λŠ₯ν•˜λ‹€.

0x01. 점(.)μ—°μ‚°μž μš°μ„ μˆœμœ„

  • 점(.)μ—°μ‚°μžλŠ” λ‹€μŒκ³Ό 같은 μˆœμ„œλ‘œ λ³€μˆ˜μ˜ μ•ˆμͺ½ 속성에 접근을 μ‹œλ„ν•œλ‹€.

    1. λ³€μˆ˜λ₯Ό μ‚¬μ „ν˜•(dict)으둜 μƒκ°ν•˜κ³  점(.) μ—°μ‚°μžλ‘œ Keyκ°’ 쑰회
    2. λ³€μˆ˜λ₯Ό 객체둜 μƒκ°ν•˜κ³  λ‚΄λΆ€ 속성값 쑰회 λ˜λŠ” ν•¨μˆ˜ 호좜
    3. λ³€μˆ˜λ₯Ό 리슀트(list)둜 μƒκ°ν•˜κ³  점(.) μ—°μ‚°μžλ‘œ Index 쑰회

II. ν…œν”Œλ¦Ώ ν•„ν„°

{{ λ³€μˆ˜λͺ… | ν•„ν„° }}

  • ν…œν”Œλ¦Ώ λ³€μˆ˜λ₯Ό νŠΉμ • ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜κΈ° μœ„ν•΄ μ‚¬μš© (μ•„λž˜λŠ” λŒ€λ¬Έμžλ‘œ ν•„ν„°λ§ν•œ 것)

{{ λ³€μˆ˜λͺ… | ν•„ν„°:인자 }}

  • 일뢀 ν•„ν„°λŠ” λ‹€μŒκ³Ό 같이 ν•„ν„° 뒀에 인자λ₯Ό ν•„μš”λ‘œ ν•œλ‹€.

0x01. default

{{ λ³€μˆ˜λͺ… | default:"coffee" }}

  • μ°Έμ‘°ν•˜λŠ” ν…œν”Œλ¦Ώ λ³€μˆ˜κ°€ λΉ„μ–΄ μžˆκ±°λ‚˜ λΆ€μšΈν˜• False일 경우 λ³€ν™˜λ˜λŠ” 값을 μ§€μ •ν•œλ‹€.
    λ³€μˆ˜κ°€ λΉ„μ–΄ μžˆκ±°λ‚˜ Falseλ©΄ coffee λΌλŠ” ν…μŠ€νŠΈλ‘œ λŒ€μ²΄ λœλ‹€.

0x02. capfirst

{{ λ³€μˆ˜λͺ… | capfirst }}

  • 맨 μ²«κΈ€μžλ₯Ό λŒ€λ¬Έμžλ‘œ λ°”κΏ” μ€€λ‹€.

0x03. random

{{ λ³€μˆ˜λͺ… | random }}

  • 반볡 κ°€λŠ₯ν•œ ν…œν”Œλ¦Ώ λ³€μˆ˜μ— λŒ€ν•΄ λ¬΄μž‘μœ„λ‘œ ν•˜λ‚˜λ₯Ό μΆ”μΆœν•΄ λ³€ν™˜ν•œλ‹€.
    λ§Œμ•½ variable이 μ°Έμ‘°ν•˜λŠ” 값이 [ "a", "b", "c", "d" ] 인 λ¦¬μŠ€νŠΈν˜•μ΄λΌλ©΄ ν…œν”Œλ¦Ώ λ³€μˆ˜κ°€ 리슀트 λ‚΄μ˜ ν•˜λ‚˜μ˜ μ›μ†Œλ‘œ λŒ€μ²΄ λœλ‹€.

0x04. upper & lower

{{ λ³€μˆ˜λͺ… | upper }} , {{ λ³€μˆ˜λͺ… | lower }}

  • ν…œν”Œλ¦Ώ λ³€μˆ˜λ₯Ό λŒ€λ¬Έμž(upper) λ˜λŠ” μ†Œλ¬Έμž (lower)둜 λ³€ν™˜ν•œλ‹€.

0x05. ljust & rjust

{{ λ³€μˆ˜λͺ… | ljust:"length" }}
{{ λ³€μˆ˜λͺ… | rjust:"length" }}

  • 주어진 길이 λ‚΄μ—μ„œ 곡백을 λ„£μ–΄ μ™Όμͺ½ μ •λ ¬(ljust) λ˜λŠ” 였λ₯Έμͺ½ μ •λ ¬(rjust)을 ν•œ λ¬Έμžμ—΄λ‘œ λ³€ν™˜ν•œλ‹€.

이 밖에도 λͺ‡ 가지 ν•„ν„°κ°€ 더 μžˆλŠ”λ° λͺ¨λ‘ μ™ΈμšΈ ν•„μš”λŠ” λ‹Ήμ—°νžˆ μ—†κ³  ν•„μš”ν•  λ•Œ μ°Ύμ•„μ„œ μ‚¬μš©ν•˜λ©΄ λœλ‹€. 더 λ§Žμ€ ν…œν”Œλ¦Ώ 필터에 λŒ€ν•œ μ •λ³΄λŠ” μ•„λž˜ Django 곡식 λ¬Έμ„œλ₯Ό μ°Έκ³ 
https://docs.djangoproject.com/en/2.2/ref/templates/builtins/#ref-templates-builtins-filters

III. ν…œν”Œλ¦Ώ νƒœκ·Έ

{% νƒœκ·Έ %} ν˜Ήμ€
{% νƒœκ·Έ %} ~ {% endνƒœκ·Έ %}

  • ν…œν”Œλ¦Ώμ„ μž‘μ„±ν•  λ•Œ λ‘œμ§μ„ ν•¨κ»˜ λ„£μ–΄μ„œ ν…œν”Œλ¦Ώμ„ νŽΈν•˜κ²Œ μž‘μ„±ν•  수 μžˆλ„λ‘ ν•΄μ€Œ.
    • {% for %} ~ {% endfor %}둜 λ°˜λ³΅λ˜λŠ” 뢀뢄을 κ°„λ‹¨ν•˜κ²Œ μ²˜λ¦¬ν•  μˆ˜λ„ 있고,
    • {% if %} ~ {% else %} ~ {% endif %}둜 쑰건에 따라 ν…œν”Œλ¦Ώμ„ 달리할 μˆ˜λ„ 있고,
    • {% block %} ~ {% endblock %} μ€‘λ³΅λ˜λŠ” 뢀뢄을 μƒμ†μœΌλ‘œ μ²˜λ¦¬ν•  μˆ˜λ„ μžˆλ‹€.

0x01. for

{% for obj in values %} ~ {% endfor %}

  • 반볡 κ°€λŠ₯ν•œ 객체λ₯Ό λ°˜λ³΅ν•˜λ©° ν…œν”Œλ¦Ώμ„ μž‘μ„± ν•  수 μžˆλ‹€. μ•„λž˜λŠ” μ‚¬μš© μ˜ˆμ œμ΄λ‹€.
{% for food in foods %} 
    <li> {{ food.name }} </li>
{% endfor %}
  • λ§Œμ•½ λͺ©λ‘μ„ μ—­μˆœμœΌλ‘œ λ°˜λ³΅ν•˜κ³  μ‹Άλ‹€λ©΄ μ•„λž˜μ™€ 같이 μ‚¬μš© ν•  수 μžˆλ‹€.
{% for food in foods reversed %} 
    <li> {{ food.name }} </li>
{% endfor %}
  • 반볡 κ°€λŠ₯ν•œ 객체가 λΉ„μ–΄ μžˆκ±°λ‚˜ μ‘΄μž¬ν•˜μ§€ μ•Šμ„ λ•ŒλŠ” μ•„λž˜μ™€ 같이 μ‚¬μš© ν•  수 μžˆλ‹€.
    μ•„λž˜λŠ” λ§Œμ•½ foodsλΌλŠ” 객체가 λΉ„μ–΄μžˆλ‹€λ©΄ {% empty %} ꡬ문이 μ‹€ν–‰λœλ‹€.
{% for food in foods %} 
    <li> {{ food.name }} </li>
{% empty %}
    <li> There is no food. </li>
{% endfor %}  

0x02. if

{% if value1 %} ~ {% elif value2 %} ~ {% else %} ~ {% endif %}

  • νŒŒμ΄μ¬μ—μ„œ μ‚¬μš©ν•˜λ˜ 쑰건문과 ν˜•νƒœκ°€ λΉ„μŠ·ν•˜λ‹€. μ‹€μ œλ‘œ μ‚¬μš© ν•  λ•Œλ„ μš°λ¦¬κ°€ μ•„λŠ” 쑰건문의 ν˜•νƒœλ‘œ μ‚¬μš©ν•˜λ©΄ λœλ‹€.
{% if hungry %}
    <p> Let's eat! </p>
{% elif sleepy %}
        <p> You need some coffee. </p>
{% else %}
    <p> Go back to work. </p>
{% endif %}  

0x03. with

{% with value1=value2 %} ~ {% endwith %}

  • λ³΅μž‘ν•œ λ³€μˆ˜κ°€ μžˆμ„ λ•Œ '별λͺ…'을 뢙이기 μœ„ν•΄ μ‚¬μš©ν•©λ‹ˆλ‹€. with ꡬ문 λ‚΄μ—μ„œλŠ” value1을 value2 λŒ€μ‹  μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

0x04. block, static λ“±λ“±

  • 이전 μ±•ν„°μ—μ„œ ν•œκ²ƒλ“€

이 밖에도 λͺ‡ 가지 ν…œν”Œλ¦Ώ νƒœκ·Έκ°€ 더 μžˆλŠ”λ°, 필터와 λ§ˆμ°¬κ°€μ§€λ‘œ ν•„μš”ν•  λ•Œ μ°Ύμ•„μ„œ μ‚¬μš©ν•˜λ©΄ λœλ‹€. ν…œν”Œλ¦Ώ νƒœκ·Έμ— λŒ€ν•œ 더 λ§Žμ€ μ •λ³΄λŠ” μ•„λž˜ Django 곡식 λ¬Έμ„œλ₯Ό μ°Έκ³ 
https://docs.djangoproject.com/en/2.2/ref/templates/builtins/#ref-templates-builtins-tags

IV. ν…œν”Œλ¦Ώ 주석

{# 주석 #}

  • ν…œν”Œλ¦Ώ μ–Έμ–΄λ‚΄μ—μ„œ μ£Όμ„μ²˜λ¦¬λ₯Ό ν•˜κΈ° μœ„ν•œ 것이닀.
profile
hello world :)

0개의 λŒ“κΈ€