1. 템플릿 태그
템플릿 태그는 기존 Python에 있는 syntex에 해당하는 부분이다.
if, else, for 구문과 같은 것을 사용할 수 있고, 추가로 확장 syntex를 (extends, block, include, etc) 사용할 수 있다.
중괄호 ( { } )와 퍼센트 ( % )를 조합하여 사용한다.
{% 문법 %}
2. 템플릿 변수
템플릿 변수는 render 함수나 JsonResponse 함수로 데이터를 전달 받아 html 파일 안에서 호출되는 파이썬의 딕셔너리형 변수이다. 중괄호 2개를 사용한다.
{{ 변수 }}
3. 템플릿 필터
템플릿 필터는 변수 값을 변환시켜 출력하기 위한 옵션이다. 템플릿 변수 옆에 파이프( | )를 사용한다.
{{ 변수 | 옵션 }}
▫️ main > urls.py에 sample 경로 추가
from main.views import index, test, sample
from a.views import indexA
from b.views import indexB
from c.views import indexC
from d.views import indexD
urlpatterns = [
path('admin/', admin.site.urls),
path('', index),
path('sample', sample), # main의 views.py 파일에 sample 함수로 매핑
path('testtest/', test), # main의 views.py 파일에 test 함수로 매핑
path('aa/', indexA),
path('bb/', indexB),
path('cc/', indexC),
path('dd/', indexD),
]
▫️ main > views.py에 sample 함수 추가
from django.shortcuts import render, redirect
from django.http import HttpResponse, JsonResponse
def index(request):
return render(request, 'index.html')
def test(request):
d = {'name':'je', 'age':24}
return JsonResponse(d)
def sample(request):
d = {'name':'je', 'age':24}
l = {100, 200, 300}
return render(request, 'sample.html', {'value':l})
# templates에서 value라는 이름으로 l을 사용할 것임!
▫️ main > templates > sample.html 파일 생성
<h1>
{{ value }} <!-- value는 views.py의 l을 value라고 정의해놓았음 -->
</h1>
<p>
{{ value.2 }} <!-- 멤버변수.인덱스 -->
</p>
▫️ url 경로에 /sample 요청하면 views.py의 l을 출력해줌!
▫️ 딕셔너리 형식으로 값 보내고 출력하기
from django.shortcuts import render, redirect
from django.http import HttpResponse, JsonResponse
from .models import Notice
def index(request):
return render(request, 'index.html')
def test(request):
d = {'name':'je', 'age':24}
return JsonResponse(d)
def sample(request):
d = Notice.objects.all()
return render(request, 'sample.html', {'value':d})
▫️ for 구문
{% for i in range() %}
{% endfor %}
<h1>{{value}}</h1>
<p>{{value.1.title}}</p>
{% for i in value %}
<h1>{{forloop.counter}} - {{i.title}}</h1>
<!-- counter0 : 인덱스 0부터 시작 -->
<!-- revcounter0 : 인덱스 역순, 마지막 인덱스가 0이 되게 -->
<p>{{i.contents}}</p>
{% endfor %}
▫️ if, else 구문
{% if 조건 %}
{% elif 조건 %}
{% else 조건 %}
{% endif %}
<h1>{{value}}</h1>
<p>{{value.1.title}}</p>
{% for i in value %}
<h1>{{forloop.counter}} - {{i.title}}</h1>
<!-- counter0 : 인덱스 0부터 시작 -->
<!-- revcounter0 : 인덱스 역순, 마지막 인덱스가 0이 되게 -->
<p>{{i.contents}}</p>
<p>{{i.viewCount}}</p>
{% if i.viewCount > 7 %}
<p>뷰 수가 많습니다.</p>
{% elif i.viewCount > 5 %}
<p>콘텐츠가 반응을 보이고 있습니다.</p>
{% else %}
<p>콘텐츠 홍보를 더 해주세요..</p>
{% endif %}
{% endfor %}
- 템플릿 코드로 변수 생성
<h1>{{value}}</h1> <p>{{value.1.title}}</p> {% for i in value %} <h1>{{forloop.counter}} - {{i.title}}</h1> <p>{{i.contents}}</p> <p>{{i.viewCount}}</p> {% if i.viewCount > 7 %} <p>뷰 수가 많습니다.</p> {% elif i.viewCount > 5 %} <p>콘텐츠가 반응을 보이고 있습니다.</p> {% else %} <p>콘텐츠 홍보를 더 해주세요..</p> {% endif %} {% endfor %} {% with value='hello world' %} <h1>{{value}}</h1> {% endwith %}
- with 변수 = 값
<h1>{{value}}</h1>
<p>{{value.1.title}}</p>
{% for i in value %}
<h1>{{forloop.counter}} - {{i.title}}</h1>
<p>{{i.contents}}</p>
<p>{{i.viewCount}}</p>
{% if i.viewCount > 7 %}
<p>뷰 수가 많습니다.</p>
{% elif i.viewCount > 5 %}
<p>콘텐츠가 반응을 보이고 있습니다.</p>
{% else %}
<p>콘텐츠 홍보를 더 해주세요..</p>
{% endif %}
{% endfor %}
{% with value='hello world' %}
<h1>{{value}}</h1>
{% endwith %}
- load 구문
사용자가 템플릿 코드 정의할 수 있음! 정의한 태그를 불러오는 역할
- 주석
- 한 줄 주석 {# hello world #}
- 주석여러 줄 주석 {% content %} {% endcontent %}
{# hello world #}
{% content %}
<p>hello world!!!!!!!!!</p>
{% endcontent %}
'WEB > Django' 카테고리의 다른 글
[Django] url 개선 (0) | 2022.04.10 |
---|---|
[Django] ORM, Django Shell, QuerySet (0) | 2022.04.10 |
[Django] Django 구조와 MTV (0) | 2022.04.10 |
[Django] admin 페이지에 Notice 등록하기 (0) | 2022.04.10 |
[Django] 프로젝트 파일 속성값 (0) | 2022.04.10 |
댓글