Django에서 템플릿 필터 사용자 정의

2192 단어
Django의 템플릿 필터는 강력하고 쓰기 좋다.물론 프로젝트가 앞뒤로 분리되어 템플릿이 사용되지 않으면 템플릿 필터가 존재하지 않습니다.
템플릿 필터의 역할은 백엔드에서 들어오는 보기 변수에 대해 값이나 형식을 바꾸는 것입니다.Django에는 필터가 매우 많아서 기본적으로 프로젝트에서 사용할 수 있습니다.
1. Django의 내장 필터
예를 들어 add: add 뒤에 있는 파라미터를 value에 추가한다.
{{value | add : "2"}}
value의 값이 4이면 출력은 6.
예를 들어 cut: 주어진 매개 변수 변수와 같은 문자를 제거value합니다.
{{value | cut:" "}}
value"Hello world"이면 출력"Helloworld"(빈칸을 제외).
그러나 때때로 업무 수요에 따라 우리는 자신의 템플릿 필터를 써야 한다. 다음은 사용자 정의 템플릿 필터를 설명하자.
2. 매개 변수가 없는 필터 사용자 정의
Markdown에서 당신의 글과 코드를 밝게 하는 데도 이런 필터를 사용했습니다.예를 들어 문자열을 대문자로 바꾸는 데 사용되는 my_upper 필터를 실현합니다. ((Django 이미 실현되었지만, upper.
예를 들면 다음과 같습니다.
{{value | my_upper}}
value"Hello world"인 경우 출력"HEELO WORLD"구체적 조작: 응용 프로그램 디렉터리에 templatetags라는 폴더를 새로 만들고 내부에 __init__.py(공백 가능)과 custom_filter.py라는 두 파일을 새로 만듭니다. 편집custom_filter.py:
from django import template

register = template.Library()

@register.filter
def my_upper(value):
    try:
        value.upper()
    except Exception, e:
        return value

이렇게 하면 my_upper 이 필터를 정의할 수 있으며, 사용할 때 템플릿 파일 헤더에 쓰는 것을 잊지 마십시오 {% load custom_filter %}.
3. 매개 변수가 있는 필터 사용자 정의
사실 첫 번째 부분의 두 가지 예는 파라미터를 가진 필터입니다. 다음은 코드로 실현해 보겠습니다.
@register.filter
def get_value(mydict,key_name):
    assert(isinstance(mydict,dict))
    try:
        return mydict[key_name]
    except KeyError:
        return mydict

위 코드는 키로 사전에서 값을 가져옵니다.
함수views.py를 시도하는 경우:
def index(request):
    dicts = {"key1" : 1, "key2" : 2, "key3" : 3 }
    return render(request, 'index.html', {'dicts': dicts})

템플릿에서 사용:
{{dicts | get_value : "key1"}}

1로 내보내기(끝)

좋은 웹페이지 즐겨찾기