웹 브라우저에서 웹 페이지를 볼 때에는 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 파일들을 불러올 수 있는 방법이 있다.
이 함수는 기본적으로 프로젝트 폴더 내의 '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')