디지털 양피지/Flask2016. 1. 5. 17:23

Custom Filters


Jinja에서는 일반적으로 변수 값을 수정하기 위하여 filter를 사용한다.

{{ num | round }}

이 경우 num 변수에 대해 round 를 수행한다. 예를 들어 num=46.99 일경우 47.0을 표시 한다.

Jinja에서는 일반적으로 많이 사용하는 필터를 등록해 놓았다. (List of Builtin Filters)


이제 원하는 Filter를 추가해보자. 

예제로 datetime을 표시하는 filter를 추가해 보자.


@app.template_filter()

def datetimefilter(value, format='%Y%m%d %H:%M')

""" convert a datetime to a ditterent format. """

return value.strftime(format)


app.jinja_env.filters['datetimefilter'] = datetimefilter

@app.template_filter() 데코레이터를 사용하여 datetimefilter() 함수를 등록 한다.

 - 기본적으로 filter의 이름은 함수의 이름으로 사용되지만 바꾸고 싶다면 다음과 같이 데코레이터에 argument 값으로 넣어주면 된다. 

@app.template_filter(formatdate)

작성이 다 되었으면 이제 현재 시간을 넘겨주는 변수를 만들고 그 값을 넘겨 주면 된다.

// test.py

current_time = datetime.datetime.now()


// template

<h4> Current date/time: {{ current_time | datetimefilter }} </h4>


Posted by 빨간 양말