1. 템플릿 변수 : {{ 변수 }}
    1. 정의되지 않은 변수는 빈(”) 문자열로 채워진 것으로 판단.
  2. 템플릿 필터 : 파이프(|)를 사용하여 변수에 필터 적용
    1. {{ name|lower }} : name 변수의 값을 소문자로
    2. {{ text|escape|linebreaks }} : text 값을 특수문자를 escape하고 <p> 태그 붙여줌
    3. {{ bio|truncatewords:30 }} : bio 값을 줄바꿈 없애고 앞 30 단어만 보여줌
    4. {{ lst|join:” // “ }} : lst의 항목들을 ” // “를 주어 묶어줌
    5. {{ value|default:”nothing” }} : value 값이 False이거나 없는 경우 “nothing”으로 보임
    6. {{ value|length }} : value의 값 대신 길이 출력
    7. {{ value|striptags }} : value의 값에서 HTML 태그 제거
    8. {{ value|pluralize }} : value의 값이 1이 아니면 복수 접미사 s를 붙여줌
      1. {{ value|pluralize:”es” }}, {{ value|pluralize:”ies” }} : 복수접미사 es, ies사용시
    9. {{ value|add:”2″ }} : value의 값에 2를 더해서 보여줌
      1. {{ first|add:second }} 일 경우
      2. first = ‘python’, second=’django’ => pythondjango
      3. first = [1,2,3], second=[4,5,6] => [1,2,3,4,5,6]
      4. first = “5”, second=”10″ => 15
  3. 템플릿 태그 : {% tag %}
    1. 반복문 : {% for %} ~ {% endfor %}
    2. 조건문 : {% if %} ~ {% elif %} ~ {% else %} ~ {% endif %}
    3. {% csrf_token %}
      1. 내부적으로 CSRF 토큰값을 검증
      2. CSRF 토큰값이 유출 될 수 있으니 외부 URL <form>엔 사용 금지
      3. CSRF(Cross-Site Request Forgery) 공격
        1. 사이트간 요청 위조 공격
        2. 이미 인증받은 사용자를 이용하여 공격시도
    4. {% url %}
    5. {% with %}
    6. {% load %}
  4. 템플릿 주석
    1. 1줄 주석 : {# 주석 #}
    2. 여러줄 주석 : {% comment %}  ~ {% endcomment %}
  5. HTML 이스케이프 : 장고는 자동으로 이스케이프 기능이 적용됨
    1. XSS(Cross-Site Scripting) 공격
      1. 일반인도 사용할 수 잇는 공격
      2. HTML 태그를 이용하여 공격
      3. 해결 : 예약어들에 대해 이스케이프 기능 사용(예: > -> &gt;)
    2. 이스케이프 비활성화
      1. 1줄 : {{ 변수|safe }}
      2. 여러줄 : {% autoescape off %} ~ {% endautoescape %}
  6. 템플릿 상속
error: Content is protected !!