반응형

<참고> http://www.w3big.com/ko/django/django-template.html


장고 템플릿 기초 요약 

 

정리. 수알치 오상문.

1. 템플릿 변수 context 값 출력 

<h1> {{ context }} </h1>


2. 기본 templates 폴더 설정

 templates 폴더는 프로젝트 폴더에 만들자.
프로젝트 앱 settings.py를 수정한다.

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR+"/templates",],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]


3. myapp 앱의 view.py 수정 :

# -*- coding: utf-8 -*-
from django.shortcuts import render

def index(request):
    context = { }
    context['hello'] = '안녕하세요, Hello World!'
    return render(request, 'index.html', context)


4. 조건문 형식1

{% if 조건식 %}
     ... 처리
{% endif %}

또는

{% if 조건식1 %}
   ... 처리1
{% elif 조건식2 %}
   ... 처리2
{% else %}
   ... 처리3
{% endif %}

[참고] elif는 여러 번 사용할 수 있다.

 

and/or를 이용한 다중 조건도 가능하다

 

{% if athlete_list and coach_list %}
     ... 
{% endif %}

 

 

5. 조건문 형식2 ( ifequal / ifnotequal )

{% Ifequal  값1  값2  %} 
   두 값이 같으면 처리
{% endifequal %}

다음은 템플릿 변수 user와 currentuser가 같으면 처리한다.

{% ifequal user currentuser %}   

Welcome!

{% endifequal %}

그리고 

{% ifequal section 'sitenews' %}    

Site News

{% else %}    

No News Here

{% endifequal %}


6. 반복문 형식

<ul>
{% for data in data_list %}
    <li>{{ data.name }}</li>
{% endfor %}
</ul>

다른 방식 (뒤집어서 처리)

{% for data in data_list reversed %}
...
{% endfor %}


반복문은 중첩할 수 있다:

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


7. 장고 주석(설명문)  {#  #}

{# 설명문입니다. #}


8. 필터

필터 템플릿을 사용하면 값을 조작할 수 있다.

{{ name|lower }}  : {{name}} 변수 값을 받고 소문자로 바꾸어 사용


9. 다중 필터 

 

출력 필터 파이프라고 한다. 
다음처럼 필터를 연결하여 사용한다.

{{ my_list|필터1|필터2 }}  .


10. 매개변수를 가진 필터 
필터 뒤에 콜론를 사용하고 이중 따옴표를 이용하여 매개변수 값을 설정한다. 

{{ bio|truncatewords:"30" }}


[참고] 다양한 필터 종류
- addslashes : 작은 따옴표 나 큰 따옴표 앞에 백 슬래시 추가합니다.
- date : 날짜 형식 지정   {{ pub_date|date:"F j, Y" }}
- length : 변수의 길이
이외에 여러가지 필터가 있다.


12. 다른 템플릿(html) 포함하기 

{% include "nav.html" %}


13. 템플릿 상속

<html>
  <head>
    <title>Hello World!</title>
  </head>

  <body>
    <h1>Hello World!</h1>
    {% block mainbody %}
       <p>original</p>
    {% endblock %}
  </body>
</html>

mainbody 태그 부분은 변경될 수 있다.


[참고] {% block ... %} 태그
hello.html가 base.html 상속 교체되는 hello.html

{% extends "base.html" %}

{% block mainbody %}
<p>base.html</p>
{% endblock %}

반응형

+ Recent posts