20210607 TIL

Breadmanยท2021๋…„ 6์›” 7์ผ
0

ํ•ญํ•ด99

๋ชฉ๋ก ๋ณด๊ธฐ
7/28
post-thumbnail

Template Engine

๋ฌธ์„œ์˜ ์›ํ˜•(template)๊ณผ data๋ฅผ ํ•ฉ์ณ ์ƒˆ๋กœ์šด document๋ฅผ ๋งŒ๋“ค์–ด ๋‚ด๋Š” software.

์„œ๋ฒ„๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ client๊ฐ€ ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๋‚˜ ํŒŒ์ผ์„ ์ „๋‹ฌํ•ด์ค€๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์›นํŽ˜์ด์ง€๋„ ํ•ด๋‹น๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์—ฌ๋Ÿฌ ๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๊ณ , ๊ฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„๋งŒ ๋‹ค๋ฅด๊ณ  ๋™์ผํ•œ ๋‚ด์šฉ์˜ ์›นํŽ˜์ด์ง€๋ฅผ ์ „๋‹ฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ๊ทธ๋ ‡๋‹ค๋ฉด ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„๋งŒ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉ์ž์˜ ์ˆ˜ ๋งŒํผ ๋งŒ๋“ค์–ด๋†“์•„์•ผํ•  ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ template engine์„ ์ด์šฉํ•œ๋‹ค๋ฉด, ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ์™€ ํŒŒ์ผ 1๊ฐœ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

Jinja

Jinja๋Š” python server framework์ธ flask์— ๋‚ด์žฅ๋œ template engine์ด๋‹ค(flask์™€ ์ œ์ž‘์‚ฌ๊ฐ€ ๋™์ผํ•˜๋‹ค.).

์ผ๋ฐ˜์ ์œผ๋กœ flask์—์„œ html ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

# app.py

from flask import Flask, render_template

app = Flask(__name__)


@app.get('/')
def main():
    # project ํด๋” ๋‚ด templates ํด๋”์—์„œ ํ•ด๋‹น ํŒŒ์ผ์„ ์ฐพ๋Š”๋‹ค.
    return render_template("hellouser.html")


if __name__ == '__main__':
    app.run('0.0.0.0', port=5000, debug=True)
<!-- hellouser.html -->
<div id="name">์•ˆ๋…•ํ•˜์„ธ์š”, @@ ๋‹˜~</div>

template engine์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด hellouser.html ํŒŒ์ผ์„ ์‚ฌ์šฉ์ž ์ˆ˜ ๋งŒํผ ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค. ๋‹ค์Œ์€ template engine์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ์ด๋‹ค.

# app.py
from flask import Flask, render_template, request

app = Flask(__name__)


@app.get('/')
def main():
    # user=... query์—์„œ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ด.
    user_receive = request.args.get("user")
    return render_template("hellouser.html", user=user_receive)


if __name__ == '__main__':
    app.run('0.0.0.0', port=5000, debug=True)
<!-- hellouser.html -->
<div id="name">์•ˆ๋…•ํ•˜์„ธ์š”, {{name}} ๋‹˜~</div>

render_template ๋ฉ”์†Œ๋“œ์— html๋กœ ๋„˜๊ฒจ์ค„ ๋ณ€์ˆ˜์™€ ๊ฐ’(user=user_recevie)์„ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ , html์—์„  {{๋ณ€์ˆ˜๋ช…}}์„ ํ†ตํ•ด ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์•„์„œ ๊ทธ๋ ค์ค€๋‹ค.

profile
๋นต๋Œ์ž…๋‹ˆ๋‹ค. ๋นต ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€