Django

[Django] 4. Django Template

개발자 뭄뭄 2022. 9. 2. 17:38
반응형

1. Django Template Language


  • 조건, 반복, 변수 치환, 필터 등의 기능을 제공
  • python 처럼 프로그래밍 구조를 사용할 수 있지만, ⇒ 파이썬 코드로 실행되는 것이 아님
  • 프로그래밍적 로직이 아니라 프레젠테이션을 표현하기 위한 것임.

2. DTL Syntax


  1. variable
    • render()의 세번째 인자로 딕셔너리 형태로 넘겨준다.
    • key에 해당하는 문자열이 template에서 사용 가능한 변수명이 된다.

  1. filters(|)
    • 표시할 변수를 수정할 때 사용한다.
    • 약간 python의 method를 쓰는 것과 비슷한 것 같다.
    <p>{{  pick }}은 {{pick|length}} 글자</p>
    <p>{{foods|join:","}}</p
    
    # 치킨은 2 글자
    # 족발,햄버거,치킨,초밥
    • chained 도 가능하다.
      <p>{{name|upper|truncatewords:10}}</p>
      
      # truncatewords:n 은 n 단어가 넘어가면 ...으로 표현한다.
      # 결과: MY NAME IS HARIM CHUNG. NICE TO MEET YOU. WHERE …

  1. tags
    • 출력 텍스트를 만들거나, 반복, 논리를 수행하여 제어 흐름을 만드는 등 변수보다 복잡한 일을 수행한다.
    • 일부 태그는 시작과 종료 태그가 필요하다
    <p>메뉴판</p>
        <ul>
            {% for food in foods %}
                <li> {{  food  }}</li>
            {% endfor %}
        </ul>
    메뉴판
    
    - 족발
    - 햄버거
    - 치킨
    - 초밥

  1. comments
  • {# #} : 한 줄짜리 comment 작성 시
  • {% comment %} {% endcomment%} : 여러줄의 comment 작성 시, 사이에 쓴다.

3. Template Inheritance


  • 코드의 재사용성에 초점을 맞춘다.
  • 템플릿 상속을 사용하면 사이트의 모든 공통 요소를 포함하고, 하위 템플릿이 재정의 할 수 있는 블록을 정의하는 기본 skeleton 템플릿을 만들 수 있다.
  • 자식(하위) 템플릿은 {% extends ‘부모.html’ %} 를 제일 위에 적으면, 부모의 요소를 상속 받는다.
    🚫
    반드시 하나의 부모만 상속할 수 있다.
  • 재정의 할 수 있는 부분은 {% block %} 을 사용해서 정의한다.
    <!--content 는 block의 이름이다.-->
    
    {% block content %}
    
    <--이 안에는 바뀔 내용이 들어간다.-->
    
    {% endblock %} 혹은 {% endblock content %}
  • base.html을 앱 안의 template 디렉토리가 아닌, 프로젝트 최상단의 templates 디렉토리 안에 위치하고 싶다면? settings.py > TEMPLATES > ‘DIRS’ : [BASE_DIR / ‘templates’,],

    최상단의 templates 폴더 안에 base가 될 html을 작성하면 된다.


Uploaded by N2T

반응형