Flask

[Flask] jinja2 템플릿 언어 (진자 템플릿)

민돌v 2021. 10. 7. 15:04
728x90

Jinja 란 무엇일까?

Jinja는 Django 템플릿을 모델로 한 Python용 템플릿 언어입니다.

따라서 장고는 물론, 파이썬 기반 웹 프레임워크인 플라스크에서도 사용 가능합니다.

 


 

템플릿 언어는 어떤 상황에서 쓰이나?

동적 웹 페이지를 구성할 때, Ajax가 아닌, 서버에서 곧바로 웹페이지 로딩과 동시에 변수 값을 html이나 js에 할당하고 싶을 때 템플릿 변수를 사용해서 변수 값을 할당 할 수 있습니다.

 

또한 템플릿 언어를 사용함으로써, html 문서 상에서 반복문, 조건문 등을 사용할 수 있도록 해줍니다.

 

 

 

템플릿 변수 사용법


app.py

def main():
    msg = request.args.get("msg")
    # DB에서 저장된 단어 찾아서 HTML에 나타내기
    words = list(db.words.find({},{"_id":False}))
    return render_template("index.html", words=words, msg=msg)

html

let words = {{ words|tojson }};

 

조건문, 반복문 뿐만아니라 딕셔너리, 딕셔너리 정렬도 가능하다.

많은 기능들은 아래 참고의 블로그를 참고하면 된다!

 

 

템플릿 필터


오늘 진자 템플릿 언어를 기록하는 가장 큰 이유는 이 템플릿 필터이다.

템플릿 필터가 정말 유용하고 많이 쓰이는 데, 그만큼 다양한 기능이 있다.

 

1. 템플릿 변수 to int

템플릿 변수로 값을 받아오면 String형식이여서 소수점이나 불필요한 정보까지 같이 보이게 되는데

템플릿 변수를 정수형으로 바꿔서 해결할 수 있다.

{{ var-name | int }}

 

 

2. Safe

템플릿 필터 중 safe 가 인상깊었는데,

템플릿 필터로 불러온 데이터는 보안상의 문제로 모두 html코드로 불러오거나 문자열로만 받아온다.

이를 받는 쪽에서 안전하다고 알려주어 받아온 코드를 실행할 수 있도록 해주는 템플릿 필터이다.

 

라이브러리 코드를 받아와서 실행 시킬 때 많이 쓰이는 것 같다.

{{ var-name | safe }}

 

3. toJson

서버에서 딕셔너리나, json형식으로 값을 보낼 때, 자바스크립트에서 값을 요상하게 받는데, 이를 json형식 그대로 받아와 사용할 수있도록 해준다.

    var user = {{ user | tojson | safe }};

 

 

 

 

 

참고

템플릿 필터 : https://himanmengit.github.io/django/2018/02/23/Built-In-Template-Filter.html

tojson : https://blog.weirdx.io/post/41787

진자 템플릿 언어1 : https://hleecaster.com/flask-jinja2/

진자공식 : https://jinja.palletsprojects.com/en/2.11.x/

반응형