템플릿 필터 직접 만들기

책 '점프 투 플라스크'를 공부하면서 정리한 내용입니다.
출처 : https://wikidocs.net/book/4542

작성일시에 직접 만든 필터 적용

1. 질문 목록 페이지에서 작성일시 확인

작성일시의 날짯값은 datetime 객체. 현재 질문 목록 페이지의 템플릿에서는 datetime 객체를 문자열로 표시했으므로 ‘2020-06-15 14:03:26.769051’과 같은 값으로 표시됨.

2. date 객체를 보기 편한 문자열로 만드는 템플릿 필터 만들기

pybo/filter.py 파일을 새로 만들고 format_datetime 함수를 추가

def format_datetime(value, fmt='%Y년 %m월 %d일 %H:%M'):
    return value.strftime(fmt)

format_datetime 함수
첫 번째 매개변수 value : 전달받은 datetime 객체
두 번째 매개변수 : 전달받은 datetime 객체 value를 두 번째 매개변수 날짜 형식으로 변환

  • fmt에 기본 값으로 '%Y년 %m월 %d일 %H:%M'을 지정해서 fmt에 아무 값도 넘어오지 않을 경우 기본 처리

3. 필터 등록

__init__.py 파일 create_app 함수 수정

format_datetime 함수 import 후 datetime이라는 이름으로 필터를 등록

 # 필터
    from .filter import format_datetime
    app.jinja_env.filters['datetime'] = format_datetime

4. 필터 사용

질문 목록 조회 화면(question_list.html)에 적용

<td>{{ question.create_date|datetime }}</td>

파이프라인 문자와 함꼐 datetime 필터 적용. 이때 format_datetime의 매개변수 value에 question.create_date가 전달된다.

5. 질문 상세 조회 화면 필터 적용

question_detail.html 수정

{{ question.create_date|datetime }}

<!-- 생략 -->

{{ answer.create_date|datetime }}

빌트인(built-in) : 라이브러리나 프레임워크에서 미리 만들어 제공하는 함수
플라스크 빌트인 필터 공식 문서: jinja.palletsprojects.com/en/2.11.x/templates/#builtin-filters

좋은 웹페이지 즐겨찾기