템플릿 시스템 - 장고 day5

POOHYA·2021년 12월 10일
0

Django

목록 보기
5/7

템플릿 시스템

  • 템플릿 코드에 if 태그 for 태그 등이 있지만 이들은 파이썬 프로그래밍 언어의 문법과는 다른 것이며 템플릿 시스템에서만 사용되는 고유의 문법이다.
  • 장고의 템플릿 시스템은 템플릿 문법으로 작성된 템플릿 코드를 해석하여 템플릿 파일로 결과물을 만들어준다. 이렇게 템플릿 코드를 템플릿 파일로 해석하는 과정을 장고에서는 렌더링이라고 한다.

템플릿 변수

{{ variable }}

템플릿 필터

  • 필터란 일반적인 용어로 어떤 객체나 처리 결과에 추가적으로 명령을 적용하여 해당 명령에 맞게 최종 결과를 변경하는 것을 말한다. 필터는 아래의 예시처럼 파이프(|) 문자를 사용한다.

name 변수값의 모든 문자를 소문자로 바꿔주는 필터이다.
{{ name | lower }}

필터 체인: text 변수값 중에서 특수 문자를 이스케이프해주고, 그 결과 스트링에 HTML < p > 태그를 붙여준다.
{{ text | escape | linebreaks }}

필터 인자: bio 변수값 중에서 앞에 30개의 단어만 보여주고, 줄 바꿈 문자는 모두 없애준다.
{{ bio|truncatewords:30 }}

만일 list가 ['a', 'b', 'c']라면 결과는 "a // b // c"가 된다.
{{ list | join:" // " }}

value 변수값이 False이거나 없는 경우, "nothing"으로 보여준다.
{{ value | default:"nothing" }}

value 변수값의 길이를 반환한다.
{{ value | length }}

value 변수값에서 HTML 태그를 모두 없애준다. 그러나 100% 보장하는 것은 아니다.
{{ value | striptags }}

value 변수값이 1 이 아니면 복수 접미사 s 를 붙여준다
{{ value | pluralize }}
{{ value | pluralize:"es"}}

더하기 필터이다
{{ value| add:"2" }}

first= 5 "", 10 이라면 결과는 15 가 된다
{{ first|add:second }}

템플릿 태그

  • 템플릿 태그는 {% tag %} 형식을 가지며 어떤 태그는 시작 태그와 끝 태그 둘 다 있어야 한다

{% for %} 태그
리스트에 담겨 있는 항목을 순회하면서 출력할 수 있다

<ul>
{% for athlete in athlete_list %}
	<li>{{ athlete.name }}</li>
{% endfor %}

{% if %} 태그
변수를 평가하여 True 이면 바로 아래의 문장이 표시된다

<ul>
{% if athlete_list %}
	Number of athletes: {{ athlete_list}ltength }}
{% elif ... %}
{% else %}
{% endif %}

{% csrf_token %} 태그
POST 방식의 < form >을 사용하는 템플릿 코드에서는 CSRF(Cross Site Request Forgery) 공격을 방지하기 위하여 사용해야 한다. 폼 데이터에는 악의적인 스크립트 문장이 들어있을 수도 있기 때문이다.

<form action= method= post "">{% csrf_token %}

{% url %} 태그
소스에 URL 을 하드코딩하는 것을 방지하기 위한 것이다.

<form action= action="{% url 'polls:vote' question.id %}" method = "post">
<form action= action="/polls/3/vote/" method ="post">

{% with %} 태그
특정 값을 변수에 저장해두는 기능을 한다.

{% with total = business.employees.count %}
	{{ total }} people works at business
{% endwith %}

템플릿 주석

템플릿 코드에서도 주석문을 사용할 수 있다.

{# 한줄 주석문 #}

{% comment %} 
여러줄
주석문
{% endcomment %}

HTML 이스케이프

profile
김효주

0개의 댓글