본문 바로가기
Python/Django

[Django] Template 유용한 3가지 팁 모음

by Lee David 2022. 8. 8.
반응형

Django에서 말하는 Template은 요청한 정보를 client 단에서 보여주기 위한 html, css, js 역할을 하는 하나의 html 응답을 생성하는 소스파일을 의미 합니다.

1. 보안 요소로 사용

Django에서 제공하는 Template을 사용하게 되면 기본 적인 개발자가 의도한 내용 이외의 데이터가 입력들어오게 되면 차단시키는 역할 또한 포함하여 보안상의 역할도 수행합니다. (ex. python 코드)

2. 중복 요소 최소화

Template에서 중복으로 사용할만한 코드들을 layout 형태로 지정하고 변경되는 내용만 따로 파일을 만들어 렌더링 시킬 수 있습니다.

# 중복되는 layout 코드
...
{% block content %}
{% endblock %}
...

# 변경되는 코드
{% extends "app/layout.html" %}
{% block content %}
...
{% endblock %}
  1. Template 안에서 변경하여 사용할 영역을 지정 합니다.
  2. extends 라는 키워드로 layout으로 지정할 Template을 지정합니다.
    1. 상위 Template에서 지정한 코드 명으로 전달할 영역을 지정해 줍니다.
3. 확장성 태그/필터 추가

Django Template에서 기본으로 제공하는 기능 입니다.

# 1. Array 슬라이싱
{{ list|slice:":2" }}
# 2. String중에 url에 누락되는 공백을 "-" 으로 변환 변환
{{ value|slugify }}
# 3. html 태그를 제거하고 문자열만 모아줌
{{ value|striptags }}
# 4. 화면에 보여질 단어 갯수 지정하고 나머지는 ...으로 표시
{{ value|truncatewords:2 }}
# 5. 숫자 3자리마다 ,를 찍음 - django.contrib.humanize를 통해 지원
{% load humanize %}
{{ 5000|intcomma }}
# 6. static 저장소에 대한 상대경로를 정대경로로 변환
{% load static %}
{% static "image/test.jpg" %}

Template을 커스텀 하는 방법입니다.

from django import template

register = template.Library()

# 1. lambda를 이용한 태그/필터 기능 추가
register.simple_tag(lambda x: x - 1, name = 'minusone')

# 2. 기본 형태의 태그/필터 기능 추가
@register.simple_tag(name = 'minus')
def minus_function(value1, value2):
    return value1 - value2

써드 파티 템플릿/필터 라이브러리 사용

# bootstrap을 load하고 하단 라인부터 필요한 라이브러리를 불러 사용합니다.
{% load bootstrap5 %}
{% bootstrap_css %}
{% bootstrap_javascript %}

 

반응형