본문 바로가기
Python/Flask

Jinja2 and Werkzeug?

by 쿠리의일상 2024. 3. 4.

Flask 는 두 개의 외부 라이브러리인 Jinja2 템플릿 엔진Werkzeug WSGI 툴킷을 사용한다.

 

jinja2

특정 문법을 사용하여 해당 문서들의 필요한 부분을 웹 브라우저가 인식할 수 있는 html 로 변환시켜주는 역할을 수행한다. (즉 Data + Template = HTML) 그밖에도 샌드박스 실행 및 선택적 오토 이스케이프를 추가하므로 보안성도 높이게 됩니다.

플라스크에선 render_template() 함수를 사용하여 진자2의 문법을 사용하여 html을 작성해준 파일을 넘겨주는 형식으로 사용한다.

https://jinja.palletsprojects.com/en/3.1.x/

 

Jinja — Jinja Documentation (3.1.x)

 

jinja.palletsprojects.com

 

Werkzeug

WSGI 툴킷으로, Web Server Gateway Interface를 의미한다. 웹 서버와 웹 어플리케이션을 연결할 때 지켜야하는 규약이므로 웹 개발 시 해당 절차를 따라 설계해주게끔 되어 있다. Werkzeug 는 이런 WSGI 규약을 지켜서  설계할 수 있게 도와주는 도구를 의미한다. 플라스크에서 request 와 response 같은 명령은 해당 라이브러리에서 이루어지게 된다.

https://werkzeug.palletsprojects.com/en/3.0.x/

 

Werkzeug — Werkzeug Documentation (3.0.x)

 

werkzeug.palletsprojects.com

간단하게 아래의 스택플로 글을 보면, 플라스크 개발 서버가 Werkzeug 서버와 같다는 것을 알 수 있다. 자세한 사항은 직접 보는 것이 좋을 듯 싶다. 

https://stackoverflow.com/questions/37004983/what-exactly-is-werkzeug

 

What exactly is Werkzeug?

From the official documentation: Werkzeug is a WSGI utility library for Python. However, when I run my Flask web application, I notice that the response header from the server contains: HTTP/1...

stackoverflow.com