Django에서 프론트 엔드에 대한 함수를 정의하기 위해 filter 및 simple_tag를 사용하는 방법에 대한 자세한 설명

零下一度
풀어 주다: 2017-06-17 10:58:33
원래의
1052명이 탐색했습니다.

이 글에서는 Django의 프론트엔드 custom 함수로 filter와 simple_tag를 사용하는 구현 방법을 주로 소개합니다. 이 글에서는 누구나 참고할 수 있고 학습할 가치가 있는 예제 코드를 통해 자세히 소개합니다. 필요하면 따라갈 수 있습니다.

머리말

Django의 템플릿 엔진은 대부분의 코드 로직 기능을 프론트 엔드를 통해 구현할 수 있는 일반적인 기능을 제공합니다. 여기서는 if 판단과 같은 가장 일반적인 상황만 지원하기 때문에 일반 기능이라고 합니다. , 반환 값의 동등 비교 등이 있지만 템플릿을 사용하여 반환 값이 합법적인 숫자 유형인지 확인하는 등 약간 더 복잡한 기능은 지원되지 않습니다. code 이를 구현하기 위해 일부 프런트엔드 기능을 사용자 정의할 수 있습니다.

Django는 filter와 simple_tag라는 두 가지 메서드를 제공합니다. 다음은 반환 값을 판단하는 함수 함수를 구현하는 두 가지 메서드를 비교한 것입니다.

준비

1. settingsconfig 파일에 애플리케이션이 등록되어 있어야 합니다. 2. 애플리케이션 디렉터리에 templatetags 디렉터리를 생성하고

3, templatetags에 모듈 파일을 생성하고 Django를 가져옵니다. 내부 방법


filter

templatetags 디렉터리에 app01_func.py라는 Python 모듈을 만듭니다. 내용은 다음과 같습니다.

from django import template
from django.template.defaultfilters import stringfilter

register = template.Library()


@register.filter
def value_verification(value): # value为前端传递的参数
 try:
  int(value)
  return True
 except:
  return False
로그인 후 복사

백그라운드 기능을 사용자 정의한 후 다음에 추가할 수 있습니다. 템플릿 파일 함수 함수를 호출하려면 먼저 템플릿 파일 헤더에 배경 Python 모듈을 도입해야 합니다.

{% load app01_func %}
로그인 후 복사

예를 들어, 백그라운드 반환 값 load가 유효한 숫자인지 확인해야 하는 경우 다음 호출을 수행할 수 있습니다. 필터와 동일하지만 차이점은 데코레이터 부분에서 simple_tag 메소드

{% if load|value_verification %}
 {{ load }} is a valid int number.
{% else %}
 {{ load }} is letter.
{% endif %}
로그인 후 복사

를 호출해야 하며 동시에 프런트엔드 호출 메소드도

from django import template
from django.template.defaultfilters import stringfilter

register = template.Library()


@register.simple # 这里修改为simple_tag
def value_verification(value): # value为前端传递的参数
 try:
  int(value)
  return True
 except:
  return False
로그인 후 복사
로 변경해야 합니다. 매개변수 전달 - 필터는 전달될 매개변수를 최대 2개까지 지원합니다.

- 단순은 여러 매개변수를 지원합니다.


필터의 매개변수 전달은 다음과 같은 방법으로 달성할 수 있습니다


{% value_verification load %}
로그인 후 복사

여기서 두 개의 매개변수가 전달됩니다. 백엔드는 로드이고 다른 하나는 100입니다. 백엔드는 함수에 대한 형식 매개변수도 지정해야 합니다.


{{ load | value_verification:"100"}}
로그인 후 복사

simple_tag는 여러 형식 매개변수를 지정할 수 있습니다.


def value_verification(value, custom): # 配置好形参
 ...
로그인 후 복사

여기 필터는 최대 2개의 매개변수만 허용하지만 현재로서는 매개변수가 많아 simple_tag를 사용하고 싶지 않습니다. 이 경우 여러 매개변수를

string
로 이어붙일 수 있습니다 백엔드는 분할 방법을 통해 여러 매개변수를 얻을 수도 있습니다.

비교 요약

simple_tag와 필터를 통해 템플릿 엔진이 수행할 수 없는 특정 작업을 수행할 수 있습니다. 필터는 우리가 지정한 함수를 값을 반환하는 실행 가능한 메서드로 변환합니다. 예를 들어 if, ifequal 등도 호출 방법이 다릅니다.


{% value_verification load 100 200 ... %}
로그인 후 복사
호출 방법이 다르기 때문에 반환 값을 판단 기준으로 사용해야 합니다. 또는 조건이 일치하는 경우 여기서는 filter 메소드와 stringfilter 메소드만 사용할 수 있습니다. 수신된 모든 매개변수를 문자열 유형으로 변경할 수 있으며 레지스터 데코레이터와 같은 함수 메소드를 참조할 수 있습니다. 그렇지 않으면 레지스터에 배치해야 합니다. 효력이 발생하지 않습니다.

위 내용은 Django에서 프론트 엔드에 대한 함수를 정의하기 위해 filter 및 simple_tag를 사용하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿