flask jinja란

bird.j·2021년 2월 26일
0

flask

목록 보기
7/7

jinja란?


Jinja는 python flask 패키지에 내장된 템플릿 엔진이다. 개발자가 동적으로 변하는 웹 페이지를 쉽게 구현할 수 있도록 도와준다. 고정적으로 출력되어야 할 서식 html코드가 존재하고 동적으로 변해야할 자리는 jinja2문법으로 비워둔다. 이후 클라이언트가 웹 브라우저를 통해 엔드포인트에 접근하면 아까 비워둔 자리에 값을 설정하여 클라이언트에게 출력한다. 이처럼 고정적인 행위와 변해야할 행위를 쉽게 할 수 있다는 장점이 있다.



형태


<!DOCTYPE HTML>
<html lang="en">
<head>
     <title>My Webpage</title>
</head>
<body>
     <ul id="navigation">
          {% for item in navigation %}
          <li><a href="{{ item.href }}">{{ item['caption'] }}</a></li>
          {% endfor}
     <ul>
     <h1>My Webpage</h1>
     {{ a_variable }}
</body>
</html>

jinja 템플릿 문법은 크게 두가지로 구분할 수 있음

  • {{ ... }} : 변수나 표현식의 결과를 출력하는 구분자(delimeter)

  • {% ... %} : if문이나 for문 같은 제어문을 할당하는 구분자(delimeter)
    ( 구분자 : jinja 템플릿 문법임을 구분하는 용도 )

만약 item.href 로 접근하는 경우에는 item 객체 내에서 href 라는 속성이 있는지 먼저 확인한 후, 없을 경우 href 라는 객체가 있는지 확인한다.
반면에 item['href'] 로 접근하는 경우에는 item 객체 내에서 href 라는 객체가 있는지 먼저 확인한 후, 없을 경우에 href 라는 속성이 있는지 확인한다.

즉, .으로 접근하는 경우 속성->객체 확인
'으로 접근하는 경우 객체->속성 확인



반복문


{% for <개별요소> in <리스트> %}
<실행코드>
{% endfor %} 

예시

{% for item in navigation %}
<li><a href="{{ item.href }}">{{ item.caption }}</a></li>
{% endfor %}

시작시에는 for 종료시에는 endfor를 쓴다.



제어문(if)


{% if <조건> %}
    <실행코드>
{% elif <조건> %}
    <실행코드>
{% else %}
    <실행코드>
{% endif %}

참고

0개의 댓글