이전의 포스트에서는 Flask를 사용하기 이전에 환경 설정을 수행한 것을 작성했습니다.

이번에는 본격적으로 예제를 통해 시작해보도록 하겠습니다.


아참, 시작하기 앞서 해당 반드시 환경 설정을 마무리 하시기 바랍니다.


[Python Flask] 웹 페이지 만들기 01 - 환경 설정


앞으로 작성될 파이썬 파일과 HTML 파일은 Ubuntu 16.04 환경에서 작성할 것입니다.


이외의 다른 플라스크 예제는 아래의 링크를 살펴봐주시기 바랍니다~



[Python Flask] 웹 페이지 만들기 03 - 파이썬에서 웹으로 값 전달

[Python Flask] 웹 페이지 만들기 04 - Bootstrap 연동하기

[Python Flask] 웹 페이지 만들기 05 - MySQL 연동하기(pymysql)

[Python Flask] 웹 페이지 만들기 06 - MySQL 연동하기(DB 클래스 생성)






01. run.py 작성

먼저 프로그램을 시작하는 프로그램을 작성해야 합니다.

run.py 라는 프로그램을 [Project Name] - [app] 디렉토리에 생성하여 다음과 같이 작성합니다.

# file name : run.py
# pwd : /project_name/run.py

from app import app

app.run(host="0.0.0.0", port=80)


생각보다 별 거 없는 내용에 안심하시면 안 됩니다.

뒤에는 더한 코드들과 신경쓸 것들이 넘쳐나기 때문이지요...


먼저 run.py는 위와 같이 해두어도 무관하니 이제 우리가 작성할 메인 페이지를 작성해보도록 합시다.




02. __init__ 파일 작성

__init__.py 파일은 위에서 선언한 from app import app을 통해 실행되는 모든 파일들을 전체적으로 초기화 및 실행하기 위한 파일입니다.

때문에 위의 파일은 하위 디렉토리의 모든 파일을 초기화 및 실행해주는 파일이 필요하다는 것입니다.

그 파일을 작성하는 방법은 다음과 같습니다.

# file name : __init__.py
# pwd : /project_name/app/__init__.py

from flask import Flask

app = Flask(__name__)

# 추가할 모듈이 있다면 추가
# config 파일이 있다면 추가

# 앞으로 새로운 폴더를 만들어서 파일을 추가할 예정임
# from app.main.[파일 이름] --> app 폴더 아래에 main 폴더 아래에 [파일 이름].py 를 import 한 것임

# 위에서 추가한 파일을 연동해주는 역할
# app.register_blueprint(추가한 파일)


위의 주석들은 아래에서 파일을 입력한 후 알아보도록 하겠습니다.




03. 메인 페이지 파일 작성

메인페이지와 이제 앞으로 여러분이 추가할 내용에 따라 다르게 구분을 해주는 것이 좋겠지요?

때문에 저는 main 페이지를 작성하기 위해 폴더별로 구분을 해주었습니다.


아래의 소스코드는 [Project Name] - [app] - [main] - index.py 와 같은 순서로 디렉토리를 구분하여 만들었습니다.

# file name : index.py
# pwd : /project_name/app/main/index.py

from flask import Blueprint, request, render_template, flash, redirect, url_for
from flask import current_app as app
# 추가할 모듈이 있다면 추가

main = Blueprint('main', __name__, url_prefix='/')

@main.route('/main', methods=['GET'])
def index():
      # /main/index.html은 사실 /project_name/app/templates/main/index.html을 가리킵니다.
      return render_template('/main/index.html')


위의 소스 파일에서 유의해야 할 점을 표시해보았습니다.


먼저 8번 라인은 index 파일을 들어갔을 때 어떻게 이름을 설정할지 결정하는 부분이며, url_prefix는 URL을 어떻게 뒤에 붙일지 결정하는 부분입니다.

그리고 10번 라인은 파일 내부에서 어떤 경로로 나타낼지 결정하는 부분입니다.

11번 라인은 큰 의미는 없지만, 나중에 url_for에서 사용될 함수 이름을 유심히 봐두시기 바랍니다.

13번 라인은 12번 라인의 설명과 같습니다.


파이썬 소스를 모두 작성했다면 이제 13번 라인에서 불려들일 template 파일 즉, HTML 파일을 작성해주어야 합니다.


HTML 파일은 다음과 같습니다.

<!--file name : index.html-->
<!--pwd : /project_name/app/templates/main/index.html-->
<html>
	<head>
		This is Main page Head
	</head>
	<body>
		This is Main Page Body
	</body>
</html>


위의 코드는 생각보다 별 것 없지요.

맞습니다.

Flask에서는 자동으로 Flask가 HTML 모습을 만들어주는 게 아니라, 우리가 직접 일일이 껍데기를 만들어서 불러오는 형식을 가지고 있습니다.

하지만 번거롭다고 생각하지 마시기 바랍니다.


다 그래요.....(저는 사실 파이썬으로 코딩만 하면 웹페이지가 이쁘게 나올 줄 알았네요.. 허허)



이제 02.__init__ 파일 작성에서 나온 from app.main.[파일이름]에 대해 수정을 해봅시다.


다음과 같이 수정해볼 수 있습니다.

# file name : __init__.py
# pwd : /project_name/app/__init__.py

from flask import Flask
# 추가할 모듈이 있다면 추가

app = Flask(__name__)

# 파일 이름이 index.py이므로
from app.main.index import main as main 

# 위에서 추가한 파일을 연동해주는 역할
app.register_blueprint(main) # as main으로 설정해주었으므로


이제 python3 run.py를 통해 실행해보도록 합시다~



앙 안 이쁘다..


HTML 파일이 영 아니기 때문이 저렇게 나오는 것이지요..


이제 이 다음 포스트에서는 Python 코드에서 HTML로 데이터를 넘겨주는 방법에 대해 알아보도록 하겠습니다.


+ Recent posts