Django 프레임에서 템플릿 필터를 사용자 정의하는 방법

1702 단어 Django여과기
사용자 정의 필터는 하나 또는 두 개의 매개변수가 있는 Python 함수입니다.
  • (입력) 변수의 값입니다
  • 매개 변수의 값은 기본값이거나 완전히 비어 있을 수 있습니다
  • 예를 들어 필터 {{var|foo:'bar'}}에서 필터foo는 변수 var와 기본 매개 변수 bar로 전송됩니다.
    필터 함수는 항상 반환값이 있어야 합니다.그리고 이상을 일으킬 수 없으니 조용히 실패해야 한다.오류가 발생하면 원시 입력이나 빈 문자열을 되돌려야 합니다. 이것은 더욱 의미가 있습니다.
    다음은 필터를 정의하는 예입니다.
    
    def cut(value, arg):
      "Removes all values of arg from the given string"
      return value.replace(arg, '')
    
    
    다음은 변수 값의 공백을 없애는 데 사용할 수 있는 필터의 예입니다.
    
    {{ somevariable|cut:" " }}
    
    
    대부분의 필터는 파라미터가 필요하지 않습니다.다음 예에서는 매개변수를 함수에서 제거합니다.
    
    def lower(value): # Only one argument.
      "Converts a string into all lowercase"
      return value.lower()
    
    
    필터를 정의한 후 Library 인스턴스로 등록해야 Django의 템플릿 언어를 사용할 수 있습니다.
    
    register.filter('cut', cut)
    register.filter('lower', lower)
    
    
    Library.filter () 메서드에는 다음 두 가지 매개변수가 필요합니다.
  • 필터의 이름(문자열)
  • 필터 함수 자체
  • 만약 당신이 Python 2.4나 업데이트된 버전을 사용한다면, 장식기 레지스터를 사용할 수 있습니다.filter():
    
    @register.filter(name='cut')
    def cut(value, arg):
      return value.replace(arg, '')
    
    @register.filter
    def lower(value):
      return value.lower()
    
    
    두 번째 예에서name 파라미터를 사용하지 않으려면, Django는 함수 이름을 필터 이름으로 사용합니다.
    다음은 전체 템플릿 라이브러리의 예입니다. 이것은 cut 필터를 포함합니다.
    
    from django import template
    
    register = template.Library()
    
    @register.filter(name='cut')
    def cut(value, arg):
      return value.replace(arg, '')
    
    

    좋은 웹페이지 즐겨찾기