Library 사용자 지정 레이블
템플릿에 기능을 추가해야 하는데 Django 템플릿 탭(template tags)의 핵심 설정이 이 기능을 제공하지 못할 때 사용자 정의 템플릿 탭은 매우 편리합니다.
사용자 정의 템플릿 태그 만들기
Django는 간단한 방법으로 템플릿 태그(template tags)를 만들 수 있도록 다음과 같은 도움말 함수(functions)를 제공합니다.
simple_tag: 데이터를 처리하고 문자열 (string) 을 되돌려줍니다.
inclusion_tag: 데이터를 처리하고 렌더링된 템플릿을 되돌려줍니다 (template)
assignment_tag: 데이터를 처리하고 상하문 (context) 에 변수 (variable) 를 설정합니다.
템플릿 태그(template tags)는 Django 응용 프로그램에 있어야 합니다.
from django import template
register = template.Library()
from ..models import Post
@register.simple_tag
def total_posts():
return Post.published.count()
사용자 정의 템플릿 탭(template tags)을 사용하기 전에 {% load%} 탭을 템플릿 (template)에 불러와야 유효합니다.
@register.inclusion_tag('blog/post/latest_posts.html')
def show_latest_posts(count=5):
latest_posts = Post.published.order_by('-publish')[:count]
return {'latest_posts': latest_posts}
우리는 장식기 @register를 통해inclusion_tag 등록 템플릿 태그(template tag), 지정 템플릿(template)은blog/post/latestposts.html 반환 값 렌더링
이 함수는 간단한 값이 아닌 사전 변수를 되돌려줍니다.태그 포함 (inclusion tags) 은 상하문 (context) 으로 특정한 템플릿 (template) 을 렌더링하는 사전 값을 되돌려야 합니다.태그 포함 사전을 반환합니다.
@register.assignment_tag
def get_most_commented_posts(count=5):
return Post.published.annotate(
total_comments=Count('comments')
).order_by('-total_comments')[:count]
각 게시물의 총 댓글 수를 모아 토탈에 저장합니다comments 필드에서
필터는 사실 Python 함수이며, 하나 또는 두 개의 인자를 제공합니다. 하나는 처리해야 할 변수 값이고, 하나는 선택할 수 있는 인자입니다.그것들이 되돌아오는 값은 보여주거나 다른 필터 (filters) 에 의해 처리될 수 있다.
from django.utils.safestring import mark_safe
import markdown
@register.filter(name='markdown')
def markdown_format(text):
return mark_safe(markdown.markdown(text))
저자: Stayhungrya883 링크:http://www.jianshu.com/p/7c6eeafdc633출처: 저작권은 작가에게 귀속된다.상업 전재는 작가에게 연락하여 권한을 부여받고, 비상업 전재는 출처를 밝혀 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.