<참고> 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 %}
'Django' 카테고리의 다른 글
장고, 로그인 상태 유지하기 구현 (0) | 2021.10.05 |
---|---|
장고, PC 또는 모바일 웹 클라이언트 접속 검사 (0) | 2021.10.04 |
HTML, 자바스크립트, 장고 템플릿 주석(설명문) 비교 (0) | 2021.09.22 |
장고 이메일(SMTP ) 발송하기 (0) | 2021.09.21 |
장고 회원 가입, 이메일 인증(SMTP), 로그인, 로그아웃 처리 (0) | 2021.09.20 |