목차
select() 예제 - 테스트 통과한 요소만 필터링
select() 정의
select() 구문
select() 예제 - 테스트 통과한 요소만 필터링
[예제1] - 홀수만 출력
{% set numbers = [1,2,3,4,5] %}
{% for n in numbers|select("odd") %}
{{ n }}
{% endfor %}
결과값: 1 3 5
[예제2] - 짝수만 출력
{% set numbers = [1,2,3,4,5] %}
{% for n in numbers|select("even") %}
{{ n }}
{% endfor %}
결과값: 2 4
[예제3] - 3으로 정확히 나눠지는 수만 출력
{% set numbers = [1,2,3,4,5] %}
{% for n in numbers|select("divisibleby", 3) %}
{{ n }}
{% endfor %}
결과값: 3
[예제4] - 지정 숫자보다 작은 수만 출력
{% set numbers = [1,2,3,4,5] %}
{% for n in numbers|select("lessthan", 3) %}
{{ n }}
{% endfor %}
결과값: 1 2
[예제5] - 정확히 일치하는 문자열만 출력
{% set strings = ["홈짱닷컴","Homzzang.com", "홈짱"] %}
{% for n in strings|select("equalto", "홈짱") %}
{{ n }}
{% endfor %}
결과값: 홈짱
[예제6] - 매개변수가 전혀 없는 경우, boolean으로 평가
{% set A = [false,true,123,"홈짱"] %}
{% for n in A|select %}
{{ n }}
{% endfor %}
결과값: True 123 홈짱
select() 정의
반복 가능한 객체에 테스트(test) 적용 후 해당 테스트에 성공(= 필터링 통과)한 요소로 구성된 반복 가능한 객체를 반환하는 필터 .
1.
테스트 미지정 시, 각 요소는 boolean() 으로 평가됨. 즉, true이거나 true로 평가되는 요소들로 구성된 객체가 반환됨.
{{ numbers|select }}
{{ numbers|select("odd ") }}
{{ numbers|select("even ") }}
{{ numbers|select("divisibleby ", 3) }}
{{ numbers|select("lessthan ", 42) }}
{{ strings|select("equalto ", "mystring") }}
2. 다음과 같은 generator와 유사하다고 보면 됨.
(n for n in numbers if test_odd(n))
(n for n in numbers if test_divisibleby(n, 3))
3. cf.
reject() 필터 - 지정 테스트 통과 못 한 요소만 필터링 후 반복자 반환.
4.
Jinja2 2.7 +
5. 공식 매뉴얼
https://jinja.palletsprojects.com/en/3.1.x/templates/#jinja-filters.select
select() 구문
jinja-filters.select(value: 't.Iterable[V]', *args: Any, **kwargs: Any ) → 't.Iterator[V]'
[매개변수]
value: 't.Iterable[V]'
필수. select 필터를 적용할 반복가능한 값
*args: Any
튜플(tuple) 형태로 여러 독립변수 전달 가능.
**kwargs: Any
딕트(dict) 형태로 여러 독립변수 전달 가능.
[반환값]
테스트에 성공한 요소로 구성된 반복 가능한 객체 반환.
주소 복사
랜덤 이동