Technology issues/Tech_Trend

파이썬 Flask 프레임워크를 이용한 웹 애플리케이션 개발 가이드 #2

pauls 2025. 1. 14. 10:04
반응형

오늘은 파이썬 Flask 패키지를 설치하고, 이를 이용하여 간단한 웹 애플리케이션을 구현하는 방법에 대해 정리해 보겠습니다. 파이썬의 UI 구현에 대해 궁금하셨던 분들이라면 Flask에 대해 관심을 가질만할 거예요.

파이썬 Flask 프레임워크를 이용한 웹 애플리케이션
파이썬 Flask 프레임워크를 이용한 웹 애플리케이션

 

 

파이썬 Flask 프레임워크

Flask는 파이썬으로 만든 '마이크로 웹 프레임워크'예요. 꼭 필요한 기능만 담고 있어서 배우기 쉽고, 원하는 대로 확장할 수 있어요. Flask를 사용하면 복잡한 설정 없이도 금방 웹 애플리케이션을 만들 수 있어요.

 

반응형

 

 

  Hello, Flask!

Flask로 첫 웹 애플리케이션을 만들어볼까요? 먼저, Flask를 설치해야 해요.

명령 프롬프트나 터미널에서 이렇게 입력하세요.

pip install flask

 

자, 이제 첫 번째 Flask 앱을 만들어 볼게요. 메모장이나 VScode를 이용하여 다음 코드를 입력하세요.

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return "Hello, Flask!"

if __name__ == '__main__':
    app.run(debug=True)

이 파일명을 'app.py'라는 이름으로 저장하고 실행해보세요.

그리고 웹 브라우저에서 'http://localhost:5000'으로 접속하면 "Hello, Flask!"가 출력될 거예요.

 

이 코드가 어떻게 작동하는지 하나씩 살펴볼게요.

  1. `from flask import Flask`: Flask를 불러와요.
  2. `app = Flask(__name__)`: Flask 애플리케이션을 만들어요.
  3. `@app.route('/')`: 주소 '/'에 접속하면 아래 함수를 실행하라고 알려줘요.
  4. `def hello():`: 웹 페이지에 보여줄 내용을 만드는 함수예요.
  5. `app.run(debug=True)`: 개발 서버를 실행해요.
  6. 'debug=True'는 코드를 수정하면 서버가 자동으로 다시 시작한다는 뜻이에요.

간단하죠? 이렇게 Flask는 몇 줄의 코드만으로도 웹 애플리케이션을 만들 수 있게 해 줘요.

 

 

 

  라우팅 URL과 함수 연결

웹 사이트를 만들 때 가장 중요한 것 중 하나가 바로 '라우팅'이에요. 라우팅이란 웹 주소(URL)와 파이썬 함수를 연결해 주는 작업을 말해요.

Flask에서는 이 작업이 아주 간단하게 구현됩니다. 예를 들어볼까요? 우리 웹 사이트에 홈페이지, 소개 페이지, 연락처 페이지를 만들고 싶다고 해봐요.

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "여기는 홈페이지입니다."

@app.route('/about')
def about():
    return "우리 회사를 소개합니다."

@app.route('/contact')
def contact():
    return "연락처: 02-1234-5678"

if __name__ == '__main__':
    app.run(debug=True)

이 코드를 실행하고 브라우저에서 다음 주소들을 입력해 보세요.

  • http://localhost:5000/
  • http://localhost:5000/about
  • http://localhost:5000/contact

각각 다른 페이지가 나오는 걸 볼 수 있을 거예요.

 

`@app.route()` 데코레이터는 URL 경로와 파이썬 함수를 연결해 줍니다.

예를 들어, `@app.route('/about')`은 '/about' URL을 `about()` 함수와 연결해 주는 거죠.

 

더불어 URL에 변수를 넣을 수도 있어요. 다음 예를 볼게요.

@app.route('/hello/<name>')
def hello_name(name):
    return f"안녕하세요, {name}님!"

위 코드를 실행한 후 'http://localhost:5000/hello/Paul'로 접속하면, "안녕하세요, Paul님!"이라고 나올 거예요.

이렇게 Flask의 라우팅 기능을 사용하면, 웹 사이트의 구조를 쉽게 만들 수 있어요.

 

 

 

  템플릿으로 꾸미는 웹 페이지

이제 HTML을 사용해서 나름대로의 형태로 웹 페이지를 꾸며볼 거예요. Flask에서는 '템플릿'이라는 걸 사용해서 이 작업을 쉽게 할 수 있어요.

먼저, 'templates'라는 폴더를 만들고, 그 안에 'home.html'이라는 파일을 만들어보세요. 내용은 다음과 같은 예를 들어볼게요.

<html>
<head>
    <title>우리의 첫 템플릿</title>
</head>
<body>
    <h1>안녕하세요, {{ name }}님!</h1>
    <p>오늘은 {{ date }}입니다.</p>
</body>
</html>

 

이제 Flask 코드를 다음과 같이 구성해 볼게요.

from flask import Flask, render_template
from datetime import datetime

app = Flask(__name__)

@app.route('/')
def home():
    return render_template('home.html', name="Paul", date=datetime.now().strftime("%Y년 %m월 %d일"))

if __name__ == '__main__':
    app.run(debug=True)

이 코드를 실행하고 locahost:5000에 접속해 보세요. 나름 뭔가 구성된 듯한 웹페이지가 보일 거예요.

여기서 주목할 사항은,

  • `render_template` 함수를 사용해요. 이 함수가 HTML 파일을 불러와서 보여주는 역할을 해요.
  • HTML 파일 안의 `{{ }}` 부분은 파이썬 변수를 넣는 자리예요. `render_template` 함수에서 이 변수들의 값을 정해줄 수 있어요.

이렇게 템플릿을 사용하면, HTML로 페이지의 구조를 만들고 파이썬으로 내용을 채울 수 있어요. 더 나아가, CSS를 사용해서 페이지를 더 예쁘게 꾸밀 수도 있어요.

 

 

 

  사용자 입력 다루기

웹 사이트를 만들 때 가장 중요한 것 중 하나는 사용자와 상호작용하는 거예요. 사용자에게 정보를 입력받고, 그에 따라 반응하는 웹 페이지를 만들어볼까요?

먼저, HTML 폼을 만들어볼게요. 'templates' 폴더에 'form.html' 파일을 만들고 다음과 같이 작성해 보세요.

<html>
<head>
    <title>간단한 설문조사</title>
</head>
<body>
    <h1>좋아하는 과일은?</h1>
    <form method="POST">
        <input type="text" name="fruit" placeholder="과일 이름을 입력하세요">
        <input type="submit" value="제출">
    </form>
    {% if fruit %}
        <p>당신이 좋아하는 과일은 {{ fruit }}이군요!</p>
    {% endif %}
</body>
</html>

 

이제 Flask 코드를 다음과 같이 작성하겠습니다.

from flask import Flask, render_template, request

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def survey():
    if request.method == 'POST':
        fruit = request.form['fruit']
        return render_template('form.html', fruit=fruit)
    return render_template('form.html')

if __name__ == '__main__':
    app.run(debug=True)

이 코드를 실행하고 locahost:5000으로 접속해 보세요.

과일 이름을 입력하고 제출 버튼을 눌러보세요. 어떤가요? 입력한 과일 이름이 페이지에 나타나죠?

 

 

 

 

여기서 중요한 점들을 살펴볼게요.

  • `@app.route()` 데코레이터에 `methods=['GET', 'POST']`를 추가했어요. 이렇게 하면 이 라우트가 GET 요청(페이지 보기)과 POST 요청(폼 제출) 모두를 처리할 수 있어요.
  • `request.method`를 확인해서 GET 요청인지 POST 요청인지 구분해요. 
  • POST 요청일 때는 `request.form ['fruit']`로 사용자가 입력한 과일 이름을 가져와요.
  • HTML 템플릿에서 `{% if %}` 문을 사용해 조건에 따라 다른 내용을 보여줄 수 있어요.

이렇게 Flask를 사용하면 사용자 입력을 쉽게 처리할 수 있어요. 이제 사용자와 대화하는 웹 사이트를 만들 수 있게 된 거예요.

반응형