[Django] Django custom template tags

2020. 1. 9. 20:23· Python/Django
목차
  1. [Django] Django custom template tags
  2.  
  3. 💁‍ filter
  4.  
  5. 💁‍ Simple tags
  6.  
  7. 💁‍assignment_tag
반응형

[Django] Django custom template tags


Django에서 제공하는 django templates의 한계를 극복, 개발자가 직접 template를 제작하여 사용할 수 있다.

 

- custom template_tags는 반드시 앱 안의 "templatetags"폴더 안에 생성해야한다.

폴더 구조

- templatetags폴더가 포함된 앱은 반드시 INSTALLED_APPS 에 선언되어 있어야 한다.

- django templates에 custom templates를 추가한 경우 서버를 재시작해야 정상적으로 적용된다.

 

💁‍ filter

  • django templates 에서 |를 이용해서 사용한다.
  • @register.filter
    • name: 필터 이름
    • is_safe
    • needs_autoescape
    • expects_localtime
  • 파라메터는 기본적으로 1개의 값을 가지며, 추가로 1개 더 받을 수 있다.
from django import template

register = template.Library()


@register.filter
def isupper(val):
    return val.isupper()
{% load templatetags파일명 %}

{{ "abcd"|isupper }}

 

💁‍ Simple tags

  • 파라메터를 0개 또는 여러 개 받을 수 있다.
  • @register.simple_tag
    • name: 태그 이름
    • takes_context
import datetime
from django import template

register = template.Library()


@register.simple_tag
def current_date():
    return datetime.now().strftime("%Y %m %d")

@register.simple_tag(name="get_date")
def get_date(date):
    return datetime.now() + datetime.timedelta(days=int(date))
{% load templatetags파일명 %}

{% current_date as now %}
{% get_date "3" as date %}

{% if get_date > now %}
    <span>Yes</span>
{% else %}
    <span>No</span>
{% endif %}

 

💁‍assignment_tag

assignment_tag는 django 1.4에 개발되었으나, django 2.0 부터는 사용이 불가능하다.
assignment_tag는 python 서버쪽에서 반환한 값을 django template에서 as를 이용해서 변수로 만들어 django template에서 사용할 수 있도록 하는 태그였으나, simple_tag도 같은 역할을 할 수 있기에 삭제된 것 같다.

 

더보기

Django 1.4 added the assignment_tag helper to ease the creation of template tags that store results in a template variable.
The simple_tag() helper has gained this same ability, making the assignment_tag obsolete.
Tags that use assignment_tag should be updated to use simple_tag.

- https://docs.djangoproject.com/en/3.0/releases/1.9/#assignment-tag

 

 


[참고] https://docs.djangoproject.com/en/3.0/howto/custom-template-tags/

반응형
저작자표시 비영리 변경금지 (새창열림)

'Python > Django' 카테고리의 다른 글

[Django] Pythonanywhere에 배포하기  (0) 2020.01.13
[Django][Error] CommandError: Can't find msguniq. Make sure you have GNU gettext tools 0.15 or newer installed.  (0) 2020.01.10
[Django] Django-dotenv  (0) 2019.12.30
[Django] csv.writer 한글 입력  (1) 2019.09.05
[Django] Apache + Virtualenv 배포하는 방법  (0) 2019.09.04
  1. [Django] Django custom template tags
  2.  
  3. 💁‍ filter
  4.  
  5. 💁‍ Simple tags
  6.  
  7. 💁‍assignment_tag
'Python/Django' 카테고리의 다른 글
  • [Django] Pythonanywhere에 배포하기
  • [Django][Error] CommandError: Can't find msguniq. Make sure you have GNU gettext tools 0.15 or newer installed.
  • [Django] Django-dotenv
  • [Django] csv.writer 한글 입력
S0PH1A
S0PH1A
반응형
S0PH1A
Web Programmer
S0PH1A
전체
오늘
어제
  • 전체
    • About Me
    • Python
      • Python
      • Django
    • DataBase
      • MySQL
      • MongoDB
    • JAVA
      • JAVA
      • Spring
    • WEB
      • JavaScript
      • HTML
      • CSS
      • Vue.js
      • React
      • Nest.js
      • Node.js
      • Electron
      • PHP
    • Linux
    • Algorithm
    • 기타
    • 생각
    • App
      • ReactNative

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Error
  • vue
  • electron
  • vue.js
  • mysql
  • django
  • javascript
  • install
  • Python
  • nodejs

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
S0PH1A
[Django] Django custom template tags
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.