django1.5 사용자 정의 필터 및 레이블
첫째, 템플릿 라이브러리를 어느 Django 응용 프로그램에 두어야 할지 결정합니다.하면, 만약, 만약...py startapp에서 응용 프로그램을 만들었습니다. 응용 프로그램을 거기에 두거나 템플릿 라이브러리에 따로 만들 수 있습니다.우리는 당신의 필터가 훗날 공사에서 유용할 수 있기 때문에 후자를 사용하는 것을 더욱 추천합니다.
둘째, 적당한 Django 패키지에templatetags 디렉터리를 만듭니다.이 디렉터리는 모델스와야 합니다.py 、 views.py 등은 같은 차원에 있다.예를 들면 다음과 같습니다.
books/
__init__.py
models.py
templatetags/
views.py
templatetags에 파일 2개, 1개 만들기init__.py는 사용자 정의 탭과 필터를 저장하는 다른 파일입니다. 이 파일의 이름은 템플릿에 탭을 불러옵니다. 예를 들어 파일 이름pollextras.py 템플릿에 쓰기
{% load poll_extras %}
from django import template #
register = template.Library() #register ,template.Library
@register.filter(name='cut') # name: , (eg: cut)
def cut(value, arg):
return value.replace(arg, '')
@register.tag #
def num_plus(parser, token):
try:
v1, v2 = token.split_contents()
sum = int(v1) + int(v2)
except ValueError:
msg = 'please enter a number'
raise template.TemplateSyntaxError(msg)
return NumPlusNode(sum)
class NumPlusNode(template.Node):
def __init__(self, sum):
self.sum = sum
def render(self, context):
return self.sum
Django가 제공하는 도움말 함수 단순tag.이 함수는django입니다.template.하나의 매개 변수만 있는 함수를 매개 변수로 받아들여render 함수와 그 전제 및 기타 필요한 단위에 포장한 다음 템플릿 시스템을 통해 탭을 등록하는 방법
@register.simple_tag
def current_time(format_string):
try:
return datetime.datetime.now().strftime(str(format_string))
except UnicodeEncodeError:
return ''
태그 포함
{% books_for_author author %}
결과:
<ul>
<li>The Cat In The Hat</li>
<li>Hop On Pop</li>
<li>Green Eggs And Ham</li>
</ul>
템플릿 세션
def books_for_author(author):
books = Book.objects.filter(authors__id=author.id)
return {'books': books}
레이블 출력 렌더링을 위한 템플릿 작성
<ul>
{% for book in books %}
<li>{{ book.title }}</li>
{% endfor %}
</ul>
하나의 Library
개체 사용 inclusiontag()
이 포함된 탭을 만들고 등록하는 방법입니다.
if the preceding template is in a file called book_snippet.html, we register the tag like this:
@register.inclusion_tag('book_snippet.html')
def books_for_author(author):
# ...
템플릿 로더, 즉 TEMPLATELOADERS
의 각 항목은 다음 인터페이스에서 호출될 수 있어야 합니다.
load_template_source(template_name, template_dirs=None)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.