대단한건 아니고, flask 는 기본적으로 jinja2 를 템플릿 언어로 사용하는데 사용하다 보면 하나의 template에서 공통적으로 사용되어 지는 부분이 있다. 예를 들면, 같은 css 나, 자바스크립트를 가져오는 header의 부분이나 상단의 navigation 부분, 하단의 footer 부분이 그러한데 일일히 모든 템플릿에 넣어 주기는 귀찮다. 그래서 jinja2 에서는{% include %} 를 통해서 하나의 html 에서 다른 html 을 가져올수 있도록 해준다. 단순히 가져오는 것이라고 생각할수 있는데 내부적으로는 랜더링된 결과를 리턴한다고 한다.
<body>
{% include 'nav.html' %}
<div class="container">
...
</div>
</body>
//nav.html
<ul class="nav navbar-nav navbar-right">
<li>
{% if status == 0 %}
<a href="/login">Login</a>
{% else %}
<a href="/login">Logout</a>
{%endif%}
</li>
</ul>
의 예처럼 nav.html 에서는 status 라는 flask 로 부터 받아온 값으로 Login, Logout 을 보여줄지를 결정하는데(그리 좋은 예제는 아님) nav.html 에서 랜더링 된 html 이 include를 사용한 쪽에 포함되는 것이다.
include 문에는 ignore missing 옵션이 있는데 해당 옵션은 말 그대로 없으면 무시해라 라는 옵션이다. 위의 예에서 만약 nav.html 이 존재하지 않는다면, 호출한 페이지를 브라우저에서 열었을때 에러가 발생되고 flask에서는 nav.html이 없다는 에러 메시지가 출력이 된다. 그렇지만 아래처럼 설정하게 되면 없는 부분을 무시하고 나오게 된다.
':: IT > flask' 카테고리의 다른 글
스펙 : nginx, uwsgi, 프레임워크 및 라이브러리 : sqlarchemy/ 동적컨텐츠VS정적 컨텐츠 (0) | 2020.08.11 |
---|---|
[flask] Flask-Login (0) | 2020.08.05 |
[flack] aws : CURRENT_USER/HTTP 요청 전후에 호출되는 데코레이터/ is_authenticated 소개 및 예시/render_template 사용법 (0) | 2020.07.22 |
[flask] 내부 링크 만들기 -url_for() (0) | 2020.07.22 |