https://flask.palletsprojects.com/en/1.1.x/templating/
Flask에서는 Jinja2라는 템플릿 엔진을 이용한다.
템플릿 엔진이란, 템플릿 양식과 특정 데이터 모델에 따른 입력 자료를 합성하여 결과 문서를 출력하는 소프트웨어를 말한다. 즉, Jinja2의 역할은 Flask의 서버에서 가공한 데이터를 html 문서에 뿌려주는 것이다.
아무튼 나는 datetime 형식의 데이터를 20xx년 x월 x일 (월)의 형식으로 출력하고 싶어서 Jinja2에서 필터 함수를 만드는 방법을 찾아보았다.
def format_datetime(value, format=None):
if format is None:
weekdays = ['월', '화', '수', '목', '금', '토', '일']
wd = weekdays[value.weekday()]
format = "%Y년 %m월 %d일 ({})".format(wd)
formatted = value.strftime(format.encode('unicode-escape').decode()).encode().decode('unicode-escape')
else:
formatted = value.strftime(format.encode('unicode-escape').decode()).encode().decode('unicode-escape')
return formatted
먼저 다음과 같이 필터 함수를 등록한다.
app.jinja_env.filters['datetime'] = format_datetime
그리고 Flask에 jinja_env로 필터 함수를 등록한다.('datetime')은 필터함수의 이름이 된다.
html에서 필터함수를 사용할 때에는 {{ date|datetime() }}의 형식으로 사용하면 된다.
'Web > Flask' 카테고리의 다른 글
[Flask] SSH를 통해 AWS EC2 접속하기 (0) | 2020.03.01 |
---|---|
[Flask] 자동 문자 발송 API 사용하기(네이버 클라우드 플랫폼) (0) | 2020.03.01 |