프로젝트를 진행 하다보니 긴 html 코드 파일을 분리할 방법을 찾아보다가, Flask의 Jinja2 에서 제공하는 {% Include %} 와 {% extends %} 를 알게 되었고, 두 기능이 유사하여 차이점을 정리 해보았다.
1. Jinja Include 문법
- {% Include 'a.html' %} 코드를 작성하고 nav.html, div1.html 등으로 저장
- main.html 에서 {% include 'nav/nav.html' %} 등으로 사용
- 복잡한 div 구조를 가지거나 공통되는 영역 (nav 등)이 있을 때 빼서 쓰기 좋다.
- 사용 예시 1) nav.html 을 작성해두고 각 page에서 nav를 참조해 쓴다.
GitHub - SeonminKim1/Python: Python Framework & Libary
Python Framework & Libary. Contribute to SeonminKim1/Python development by creating an account on GitHub.
github.com
2. Jinja extends 문법
- {% extends %} {% block %} {% endblock %} 등이 사용 됨
- 상속 기능이라고 보면 되며, 부모의 템플릿을 받아서 자식이 Custom 하여 사용 가능 한 것.
- 동일한 페이지가 비슷한 부분이 많은데,
- 정리 문서 링크 : https://yubi5050.tistory.com/25
Flask Jinja 정리
Flask에서는 Jinja2 라는 템플릿 엔진을 통해 웹 화면 구성을 보다 동적으로 가능하게 함 애플리케이션 내 변수, 조건문, 반복문 등을 랜더링 함 Jinja2 홈페이지 https://jinja.palletsprojects.com/en/3.1.x/ Ji..
yubi5050.tistory.com
GitHub - SeonminKim1/Python: Python Framework & Libary
Python Framework & Libary. Contribute to SeonminKim1/Python development by creating an account on GitHub.
github.com
결론
- 둘의 가장 큰 차이는 그대로 쓸지, Custom 해서 쓸지의 차이이다.
- 코드를 단순 분리하고 싶고, 공통의 영역이 변화 없이 쓸 때 => include
- 부모의 템플릿을 이어 받아 약간의 변화만 주면서 (footer영역만 색을 계속 바꾼 다던지) 사용 => extend
참고 링크
- https://stackoverflow.com/questions/2863695/include-vs-extends-in-django-templates // StackOverflow의 Extends와 include의 차이 질문
'Python > Flask' 카테고리의 다른 글
[Flask] 이미지 업로드 (File 버전 , Modal 버전) (0) | 2022.05.16 |
---|---|
[Flask] API 분리하기 (Blueprint 모듈) (0) | 2022.05.16 |
[Flask] 모달 창 만들기 (0) | 2022.05.13 |
[Flask] 로그인 & 회원가입 & JWT Token (1) | 2022.05.13 |
[Flask] 파일 분리 (HTML, CSS, JS) (0) | 2022.05.09 |