목차
- 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) 형태로 여러 독립변수 전달 가능.
[반환값]
테스트에 성공한 요소로 구성된 반복 가능한 객체 반환.