궁금하다
{% if msg %}
alert("{{ msg }}")
{% endif %}
플라스크 서버를 만들 때 이런 문법을 html 상에서 종종 사용할 때가 있다. 이건 무슨 문법인지 궁금해졌다.
알고보니
무슨 문법이고 찾아보니 jinja의 문법이라고 한다
Jinja는 무엇인가?
여기서 Jinja가 무엇인가? Jinja는 flask가 기본으로 제공하는 템플릿 엔진이다. 위에서 본 것들은 Jinja의 템플릿 문법으로 작성한 코드다.
왜 Jinja를 사용하나?
플라스크 서버를 구축하면 파이썬 app.py와 html 파일이 서로 정보를 주고 받는다. 이때 서버(app.py)에서 보낸 정보를 1)html 상에 출력을 하거나 2)html 코드 자체를 동적으로 제어할 때 사용한다.
어떻게 사용하나?
변수
>> test.py
return render_template(‘test.html’, msg=msg)
>>test.html
{{ msg }}
- render_template의 2번째 인자로 데이터를 보내고, html 상에서 {{ }}으로 감싸주면 변수를 바로 사용할 수 있다.
- 데이터는 콤마 구분으로 여러개 보낼 수 있다.
- 파이썬과 html은 서로 다른 언어를 사용하지만, jinja 템플릿 덕분에 마치 공통의 언어에서 사용하는 변수 처럼 msg를 html 상에서도 사용할 수 있게 된다.
{% … %} for문
if, for 문 등 흐름 제어문 할당하는 구분자다.
>>test.html
{% for item in items %}
…
{% endfor %}
- 반복문 시작을 {% for item in items %}으로 하고, 반복문의 끝에는 {% endfor %}를 붙여준다.
- js에서 템플릿 리터럴로 temp_html = `` html 구문을 인위적으로 만든 후, 반복문으로 보여주는 방식과 유사해 보인다.
{% … %} if 문
>> test.py
{% if 조건 %}
실행 코드
{% elif 조건 %}
실행 코드
{% else %}
실행 코드
{% endif %}
- if, elif, else 3가지 키워드를 사용할 수 있다
- 마찬가지로 조건문 끝에는 endif 문을 붙여준다
형 변환
Jinja는 부득이하게 데이터 타입 수정 못하고 보내는 데이터를 html상에서 형 변환을 하게 해준다.
>> test.html
{{ number|int }}
- {{ 데이터|자료타입 }} 형식으로 하면 된다.
자리수 콤마(,) 추가
회계 정보와 같이 세 자리 수 마다 콤마를 찍는 formatting도 할 수 있다.
>>test.html
{{‘{:,}’.format(number[0])}}
공백 제거 / 유지
>>test.html
공백 유지
{%+ %}
공백 제거
{% -%}
참조
https://gunbin91.github.io/python/2018/09/14/python_f_jinja.html
'Log > Trouble shoot' 카테고리의 다른 글
mongoDB 에러_ Converting circular structure to JSON (0) | 2023.01.18 |
---|---|
Expres.js_SequelizeDatabaseError Unknown column 'userId' in 'field list' (0) | 2023.01.15 |
다중 파라미터 ajax post 요청 후 flask 서버에서 받기 (0) | 2022.12.07 |
js_inputText의 입력값 가져오기 문제(getElementById, getElementsByClassName) (0) | 2022.12.06 |
잘못된 블로그 기록 형식 개선 필요성 (0) | 2022.12.05 |
댓글