Flask의 render_template 사용하기

yuns_u·2021년 9월 30일
3

Flask의 HTML 랜더링

웹 브라우저에서 웹 페이지를 볼 때에는 HTML이라는 마크업 언어를 사용하게 된다.
Flask에서도 HTML 파일들을 제공하면서 웹 페이지를 클라이언트에게 보여줄 수 있다.

변경되지 않는, 정해진 데이터와 페이지뿐만 아니라 상황에 따라 다른 정보들을 웹 페이지로 보여줄 수 있어야 할 것이다.

한 가지 방법은 파이썬 코드에서 직접적으로 HTML을 리턴하도록 해주는 방식이다.
예를 들자면 아래와 같은 작업이다.

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return ''
    <html>
     <head>
      <title>
       HTML page
      </title>
     </head>
     <body>
      <h1> Writing HTML </h1>
     </body>
    </html>

위의 방식으로 html 페이지를 서버에서 코드로 작성한다며 많은 문제가 발생할 것이다.
다행히도 flask 에서는 render_template이라는 메소드로 html 파일들을 불러올 수 있는 방법이 있다.

render_template

이 함수는 기본적으로 프로젝트 폴더 내의 'templates'라는 이름의 폴더를 기본 경로로 설정한다.
따라서 먼저 templates라는 폴더를 만들고 내부에 html 파일들ㅇ르 모아두면 손쉽게 사용할 수 있다.

예를들어 templates 폴더에 아래와 같은index.html파일이 있다고 하자.

#templates 

<html>
  <head>
    <title>
      New HTML Page
    </title>
  </head>
  <body>
    <h1> I am inside of template folder </h1>
  </body>
</html>

이렇게 templates 폴더 안에 있는 html을 어플리케이션의 라우트에서 아래처럼 코드를 작성하면 index.html을 보여줄 수 있다.

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

만약 templates 폴더 내에 또 다른 폴더에 있다고 해도 경로를 templates 폴더 기준으로 잡아주어야 한다.
가령 main이라는 폴더 안에 index2.html이라는 파일이 있다면 파이썬에서 다음과 같이 코드를 작성해줘야 한다.

from flask import Flask

app = Flask(__name__)

@app.route('/main')
def main():
    return render_template('main/index2.html')
profile
💛 공부 블로그 💛

0개의 댓글