We are Architect

32. flask로 웹사이트 간단하게 만들기 본문

Programing/Python

32. flask로 웹사이트 간단하게 만들기

the best infra 2024. 12. 7. 18:32

 

* 취지 : 

  • 문득 전에 웹사이트를 파이썬으로 만들 때 플라스크와 장고를 사용하는 것을 본 적이 있는데 어떻게 사용하는지 궁금하여서 간단하게 구현해 보고 싶었다. 

 

* 도구 및 패키지

  • Flask 

 

 

* 플라스크 란?

  • 웹 애플리케이션을 쉽게 구축해 줄수 있게 하는 파이썬 기반 웹 프레임 워크이다. 
  • 프로그램이 가볍고 배우기 쉽다고 한다. 

 

 

 * 플라스크의 기본 구조 

  • flask 객체 생성 : 애플리케이션의 핵심 역할을 하는 객체를 만든다. 
app = Flask(__name__)

 

  • route 설정 : 웹 페이지의 URL주소를 정의한다. 
# @이 부분
@app.route('/<path:name>') # 127.0.0.1/css
def start(name):
    return send_from_directory('html',name)

 

  • view 함수 작성 : 라우트가 처리할 작업을 정의한다. 
@app.route('/<path:name>') # 127.0.0.1/css
def start(name):
	# 뷰 함수를 반환하는 코드 구간이다.
    return send_from_directory('html',name)

 

 

* 실습 

  • 해당 명령어로 C드라이브 폴더에서 새 폴더 생성
  • 파이썬 venv : 패키지 관리에 특화된 경량화 도구.
  • py -3 -m venv homepage1

 

 

  • 만든 폴더로 위치 변경
  • cd homepage1

 

 

  • 만들어진 파일안에 Scripts로 위치 변경 후에 activate 명령어 실행.
  • cd Scripts # 가상화 환경 실행 activate

 

 

  • homepage1 폴더로 돌아와서 플라스크 설치
  • pip install flask

 

 

  • homepage1 폴더에 start.py 파일 만들어서 플라스크 객체 및 함수 작성.
# Flask: Flask 애플리케이션을 만들기 위해 사용하는 클래스
# send_from_directory : 특정 폴더에서 파일을 찾아서 사용자에게 반환할 때 사용하는 유틸리티.
from flask import Flask, send_from_directory

# Flask 애플리케이션 객체를 만든다. 이 객체를 통해 라우트나 웹 서버를 설정.
app = Flask(__name__)

# /hello라는 URL로 접속하면 이 아래에 있는 함수가 실행
@app.route("/hello") # 127.0.0.1
def hello_world():
    # html로 Hello, World 반환
    return "<p>Hello, World!</p>"

# / URL로 접속하면 이 아래에 있는 함수가 실행
@app.route("/") # 127.0.0.1
def index():
    # html 디렉토리 안에서 index.html 파일을 찾아서 반환
    return send_from_directory('html',"index.html")

# 동적인 경로를 처리, Flask가 경로에서 값을 가져오도록 지정
@app.route('/<path:name>') # 
def start(name):
    # html 폴더에서 사용자가 요청한 name 파일을 찾아 반환
    # name에 index.html 파일값을 반환하고 index파일에서 /css/styles.css파일을 요청. 그리고 해당값으로 라우팅
    return send_from_directory('html',name)

 

 

  • start bootstrap 사이트에서 무료 html 파일 다운로드

https://startbootstrap.com/?showPro=false&showAngular=false&showVue=false

 

Start Bootstrap

 

startbootstrap.com

 

 

  • homepage1 폴더 안에 html폴더 생성
    • 다운로드 받은 파일 안에 내용물 index파일 안에 다 넣기

 

 

  • flasks --app start run 실행 후 브라우저에 들어가서 주소창에 127.0.0.1:5000 입력.

 

 

  • 전체 코드
# Flask: Flask 애플리케이션을 만들기 위해 사용하는 클래스
# send_from_directory : 특정 폴더에서 파일을 찾아서 사용자에게 반환할 때 사용하는 유틸리티.
from flask import Flask, send_from_directory

# Flask 애플리케이션 객체를 만든다. 이 객체를 통해 라우트나 웹 서버를 설정.
app = Flask(__name__)

# /hello라는 URL로 접속하면 이 아래에 있는 함수가 실행
@app.route("/hello") # 127.0.0.1
def hello_world():
    # html로 Hello, World 반환
    return "<p>Hello, World!</p>"

# / URL로 접속하면 이 아래에 있는 함수가 실행
@app.route("/") # 127.0.0.1
def index():
    # html 디렉토리 안에서 index.html 파일을 찾아서 반환
    return send_from_directory('html',"index.html")

# 동적인 경로를 처리, Flask가 경로에서 값을 가져오도록 지정
@app.route('/<path:name>') # 
def start(name):
    # html 폴더에서 사용자가 요청한 name 파일을 찾아 반환
    # name에 index.html 파일값을 반환하고 index파일에서 /css/styles.css파일을 요청. 그리고 해당값으로 라우팅
    return send_from_directory('html',name)