django 사용자 정의 템플릿 탭 등록

2233 단어 django
우선 등록 방법은 일반적으로template를 먼저 실례화합니다.Library.예:
 
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를 태그 이름으로 사용합니다.
 
여기에는 단지 하나의 예를 들 뿐, 기타 쓰기 방법은 유사하다.다른 견해가 있으면 토론하러 오신 것을 환영합니다.

좋은 웹페이지 즐겨찾기