django 사용자 정의 템플릿 탭 등록
2233 단어 django
from django import template
register = template.Library()
1. 사용자 정의 필터 등록 방법
register.filter('A',b)
filter () 방법의 두 가지 인자는 각각 A 필터의 이름 (문자열) 과 b 필터 함수 자체입니다.
2. 사용자 정의 템플릿 레이블 등록 방법
register.tag('A',b)
tag () 방법은 두 개의 인자가 필요합니다: 템플릿 탭의 이름 A와 컴파일된 함수 b입니다.
3. 간단한 라벨을 등록하는 방법:if,for,ifequal 등
register.simple_tag(A)
이 보조 함수가 전달하는 함수는 (단일) 인자만 있고, 인자 양쪽의 인용부호가 잘려서 일반적인 유니코드 문자열만 받을 수 있습니다.
4. 태그 포함 등록 방법
register.inclusion_tag('A.html')(B)
inclusion_tag () 방법은 템플릿이 있는 파일 A와 컴파일된 함수 B 두 개의 인자가 필요합니다.
부모 템플릿에 접근할 탭을 포함하는 context가 필요할 때가 있습니다.takescontext 옵션, 즉 takes 설정context=True, 그리고 이 탭은 인자가 필요하지 않으며, 다음 Python 함수에는 인자가 있습니다. 이 탭이 호출될 때의 템플릿 context입니다.
@register.inclusion_tag('A.html',takes_context=True)
def jump_link(context):# context
return {
'link':context['home_link'],
'title':context['home_title'],
# , home_link home_title link title
}
그런 다음 A.html을 만들면 다음과 같은 내용이 포함될 수 있습니다.
XXXX{{{title}}}xxxxx 이 곳의 link와 title는 각각 홈링크 및 홈title의 내용입니다.
이 파라미터를 호출하려면 라이브러리를 직접 불러오고 파라미터 없이 {{{{{jump link}} 호출할 수 있습니다
5. 사용자 정의 템플릿 로더 작성
load_template_source(template_name,template_dirs=None)
template_name은 로더와 같은 템플릿을 불러오는 이름입니다.get_template() 또는 loader.select_template()
template_dirs는 TEMPLATE 대신 선택할 수 있는DIRS의 검색 디렉토리 목록
마운트가 템플릿을 성공적으로 불러올 수 있다면, 모듈(template source,template path),templatesource: 템플릿 엔진이 컴파일한 템플릿 문자열,templatepath: 로드된 템플릿 경로입니다.마운트기가 템플릿을 불러오는 데 실패하면django를 터치합니다.template.TemplateDoesNotExist 예외.
주: 위 코드에서 @xxxx를 보았습니다. 이런 문법은python 2.4 및 이상 버전에서 만들어졌습니다. 즉,
@register.tag(name="A") #A ( )
def B(parser.token):
#.....
또는
@register.tag
def B(parser,token):
#......
Django 여기서는 함수 이름 B를 태그 이름으로 사용합니다.
여기에는 단지 하나의 예를 들 뿐, 기타 쓰기 방법은 유사하다.다른 견해가 있으면 토론하러 오신 것을 환영합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.