TIL | jinja2 / 렌더링 하기(SSR)

hyemin·2022년 3월 13일
1

TIL

목록 보기
7/7
post-thumbnail
post-custom-banner

jinja2

파이썬 Flask 패키지에 내장된 패키지 중 하나로 Flask에서는 렌더링을 위해 jinja2라는 템플릿 엔진을 사용한다.

  • 템플릿
    - 동적 파트(변수)를 포함하고 있는 파일
  • 렌더링
    - 템플릿의 동적 파트(변수)를 입력 값으로 바꿔 최종 응답값을 return하는 과정

서버 사이드 렌더링(SSR) 하기

서버 사이드 렌더링(SSR)은 서버로부터 HTML과 data가 붙여진 템플릿을 받아와 페이지 요청마다 새로고침이 일어나는 것으로 , view에 나타나는 화면 구성을 서버에서 연산해 낸다.

참고 > 렌더링

app.py

from flask import Flask, render_template

app = Flask(__name__)


// 템플릿 엔진의 name 변수에 hyemco를 입력
@app.route('/')
def home():
	mynemae = "hyemco"
	return render_template('index.html, name=myname')
    
if __name__ == '__main__':
	app.run(debug=True)

Flask는 프로젝트 폴더 안 templates 폴더에서 템플릿을 검색하게 되므로 templates 폴더안에 템플릿 파일을 저장해야한다.

templates 폴더 - index.,html

<h1>Hello, My name is {{ name }}.</h1>

렌더링 결과

Hello, MYname is hyemco.

DB에 저장된 정보를 렌더링하기

app.py

@app.route('/') 
def main():
words = list(db.words.find({}, {"_id": False})) 
	return render_template("index.html", words=words)

words콜렌션에 있는 데이터를 조건없이 find해 변수 words에 담아준다.

제어구조

if

// if문 시작
{% if user %}
	// name이 입력되어 있을 경우
	<h1>안녕, {{ name }}</h1>
{% else %}
	// name이 없을 경우
	<h1>넌 누구냣</h1>
// if문 종료
{% endif %}

for

<ul>
  	// 반복 시작
	{% for comment in comments %}
		<li>{{ comment }}</li>
  	// 반목 종료
	{% endfor %}
</ul>
post-custom-banner

0개의 댓글