template 파일 구성

Template File은 다른 동일한 이름의 리소스와의 구분하기 위해서 [app_name]/templates/[app_name]의 디렉토리 하위에 존재한다.

 

 

- detail.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>상세 페이지</title>
</head>
<body>
<h1>{{ question.question_text}}</h1>
{% if error_message %}<p><strong>{{ error_message }}</strong></p> {% endif %}

<form action="{% url 'polls:vote' question.id %}" method="post">
    {% csrf_token %}
    {% for choice in question.choice_set.all %}
        <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}"/>
        <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br />
    {% endfor %}
<input type="submit" value="투표하기">
</form>

</body>
</html>

 

-템플릿 변수

{{ variable }}

{{}} 문자로 변수를 감싸 해당 변수값을 출력할 수 있다. 변수명은 일반 프로그램밍의 변수 조건과 유사하게 문자, 숫자, 밑줄을 사용하여 이름을 정의할 수 있다.

 

장고의 템플릿 시스템에서 도트(.)는 파이썬 언어와는 조금 다르다. 템플릿 문법에서 도트(.)를 만나면 장고는 다음의 순서를 따른다.

ex) book.name

  • 사전 타입인지 확인 book['name']
  • 속성 값인지 확인 book.name
  • 리스트인지 확인 book[name]

-템플릿 필터

{{ name|lower}}

name의 변수값을 소문자로 변환하여 출력

 

{{ text|escape|linebreaks }}

text 변수값 중에서 특수 문자를 제거하고 , 그 결과에 <p>를 붙여준다.

 

{{ bio|truncatewords:30 }}

bio의 변수값 중에서 앞에 30개의 단어만 보여주고, 줄 바꿈 문자는 모두 제거

 

{{ list|join:" // " }}

필터의 인자에 빈칸이 있는 경우 따옴표로 묶어준다. list가 ['a','b','c']라면 결과는 "a // b // c"가 된다.

 

{{ value|default:"nothing"}}

value 변수값이 False이거나 없는 경우 "nothing"으로 출력

 

{{ value|length }}

value 값의 길이를 반환한다. 변수 값이 스트링이나 리스트인 경우도 가능하다.

 

{{ value|striptags }}

value 변수값에서 HTML 태그를 모두 없애줍니다. 그러나 완벽하지 않다.

 

{{ value|pluralize }}

value 변수값이 복수명 접미사 s를 붙여준다. 

 

{{ value|pluralize:"es" }} 또는 {{ value|pluralize:"ies" }}

value 변수값이 복수이면 접미사 es 또는 ies를 붙여준다.

 

{{ value|add:"2" }}

변수에 더하기를 할 수 있습니다. 데이터 타입에 따라 결과가 다르므로 주의해야 한다.

 

{{ first|add:second }}
  • first="python", second="django"라면 결과는 "pythondjango"
  • first=[1,2,3], second=[4,5,6] 이라면 결과는 [1,2,3,4,5,6]
  • first="5", second="10"이라면 결과는 15

 

 

출처: 한빛미디어, Django로 배우는 쉽고 빠른 웹 개발 파이썬 웹 프로그래밍

+ Recent posts