Jinja
진자는 파이썬을 위한 템플레이팅 언어로 현대적이고 디자이너에게 우호적이다. 빠르고, 광범위하며, 안전하다.
진자는 이미 플라스크에 포함되어 있으므로, 플라스크가 설치되어 있다면 따로 설치할 필요가 없다.
파이썬 코드를 실행하기 위해 진자 마크업으로 {{ }} 안에 표현식을 넣어 사용한다.
예제 3가지를 풀어보며 진자 탬플레이팅 언어를 익혀보자.
<기본코드>
main.py
from flask impor Flask, render_template
app = Flask(__name__)
@app.route('/')
def home()
return render_template("index.html")
if __name__ =="__main__":
app.run(debug=True)
< 예제1 >
5*6 표현식 넣기
index.html
!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>olivia</title>
</head>
<body>
<h1>hello world</h1>
<h2>4*6*3</h2>
</html>
위의 경우처럼 index.html 파일의 h2에서 5*6이라고 적으면,
실제 화면에는 4*6*3이라고 나온다.
4*6*3의 파이썬 연산이 적용되지 않는다.
<h2>{{ 4*6*3 }}</h2>
그런데위와 같이 {{ }} 안에 코드를 넣으면
이 부분을 파이썬 코드로 인식하여 파이썬 연산이 수행된 결과인
72가 화면에 보인다.
다른 것들은 전혀 바뀌지 않는다.
오직 {{ }} 안에 있는 부분만 실제 파이썬 코드로 인식하고
템플릿에 적용된다.
이것이 바로 템플레이팅 언어이다.
< 예제 2 >
random 숫자 넣기
main.py
from flask import Flask, render_template
import random
app= Flask(__name__)
@app.route('/')
def home():
random_number= random.randint(1,10)
return render_template("index.html")
if __name__ == "__main__":
app.run(debug=True)
랜덤 숫자를 생성하기 위해 import random 한 후,
home 함수 안에, random_number을 만든다.
render_template할 때 random_number가 index.html에 통합되어 렌더링되어야 한다는 점이다.
이를 위해 render_template의 파라미터를 사용할 것이다.
위의 flask.templating 해설을 보면,
render_template 함수에서, 첫 번째 파라미터로는 렌더링할 template_name이 온다.
그리고나서는 무제한으로 **kwarg 키워드 아규먼트(=**context)가 올 수 있다.
@app.route('/')
def home():
random_number= random.randint(1,10)
return render_template("index.html", num=random_number)
num이라는 변수를 생성했고, 템플릿이 렌더링 되면 변수의 이름과 값을 전달한다.
index.html
<h3>random number은 {{num}}입니다.</h3>
{{ }} 안에 num 변수를 넣는다.
화면에는 num 자리에 랜덤 함수가 생성된다.
< 예제 3>
footer에 현재 연도 표시하기
main.py
from flask import Flask, render_template
import random
import datetime
app= Flask(__name__)
@app.route('/')
def home():
random_number= random.randint(1,10)
this_year = datetime.datetime.today().year
return render_template("index.html", num=random_number, year=this_year)
datetime 모듈을 import 한다.
this year 변수에 현재 연도 값을 넣는다.
render_template 함수의 인자로 year을 만든다.
index.html
<footer>
<p>현재 연도는 {{ year }}입니다.</p>
</footer>
{{ }} 안에 year 변수를 넣는다.
<최종결과>
<html 최종코드>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>olivia</title>
</head>
<body>
<h1>shello world</h1>
<h2>{{ 4*6*3 }}</h2>
<h3>random number은 {{num}}입니다.</h3>
</body>
<footer>
<p>현재 연도는 {{ year }}입니다.</p>
</footer>
</html>
'웹개발 > Flask' 카테고리의 다른 글
여러 문장 진자 코드, for, if문 jinja, npoint, Jinja, {{ }}, {% %}, endfor, endif, npoint, json API (0) | 2022.11.17 |
---|---|
flask, Jinja 템플레이팅 언어, API 결합, title(), <>, 변수 (0) | 2022.11.17 |
flask, css 배경색깔, css파일 정적 파일, 캐시, 강력한 새로고침, shift+새로고침 (0) | 2022.11.12 |
플라스크를 활용한 웹개발, static file, 정적 파일, flask 이미지 파일 안보일 때, URL 주소 일괄 바꾸기 (0) | 2022.11.12 |
플라스크를 활용한 웹개발, rendering files, rendering template (0) | 2022.11.11 |