728x90
SMALL
- 오늘은 다양한 파이썬 웹 프레임워크 중 Flask를 이용해 풀스택에 대한 간단한 개요를 배워보며 실습을 진행했습니다.
📌 Python 웹 프레임워크
- Python의 웹 프레임워크에는 대표적으로 Flask, Django, FastAPI가 존재합니다.
- 이 중 Flask는 배우기 쉽고, 유연한 구조를 가지지만 기본적인 기능이 적어서 확장이 필요하고, 큰 프로젝트에서는 구조화가 필요합니다.
- Django는 ORM, 관리자 페이지와 같은 강력한 기능을 제공해주고 빠른 개발이 가능하게 하지만, 구조가 무거워서 소규모 프로젝트에는 과할 수가 있습니다.
- FastAPI는 빠른 성능을 지니고 있고, 비동기를 완전 지원하며 자동으로 문서를 생성해주는 기능을 가지지만, 다른 것들에 비해 비교적 새로운 프레임워크이기에 참고 자료가 적고, 라이브러리 의존도가 살짝 있습니다.
- 위 세 프레임워크 모두 각각의 장점이 있으며, 프로젝트의 규모나 목적에 따라 선택하면 좋을 것 같습니다.
- 오늘은 이 중에서도 Flask를 선택해 간단한 실습을 진행했습니다.
🧪 간단하게 Flask 실습해보기!
- 실습해 본 전체 코드는 아래와 같고, 몇 가지 설명을 추가로 해보겠습니다!
from flask import Flask, redirect, url_for, request, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('form.html')
@app.route('/success/<name>')
def success(name):
return '환영한다. %s' % name
@app.route('/login', methods=['POST', 'GET'])
def login():
if request.method == 'POST':
user = request.form['nm']
return redirect(url_for('success', name=user))
else:
user = request.args.get('nm')
return redirect(url_for('success', name=user))
@app.route('/user/<username>')
def show_user_profile(username):
return 'User %s' % username
@app.route('/post/<int:post_id>')
def show_post(post_id):
return 'Post %d' % post_id
@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
return 'User %s' % name
@app.route('/hi/<user>')
def hi(user):
return render_template('hello.html', name=user)
@app.route('/user/')
def hello_user_list():
users = ['Frank', 'Steve', 'Alice', 'Bruce']
var = 1
return render_template('user.html', **locals())
@app.route('/admin')
def hello_admin():
return 'Hello Admin'
@app.route('/guest/<guest>')
def hello_guest(guest):
return '안녕한다. 게스트 %s.' % guest
@app.route('/user_redirect/<name>')
def hello_user(name):
if name == 'admin':
return redirect('/admin')
else:
return redirect(url_for('hello_guest', guest=name))
if __name__ == '__main__':
app.run(debug=True)
📄 템플릿 파일 만들기 (HTML)
- 위 코드에서는 HTML 파일도 함께 사용하고 있는데, 뒤에 구조화할 예정이기 때문에 templates 폴더를 만들고, 아래와 같이 파일을 구성해주었습니다.
📁 templates/form.html
<!-- form.html -->
<!doctype html>
<html>
<body>
<form action='http://127.0.0.1:5000/login' method='post'>
<p>이름 입력하기</p>
<p><input type='text' name='nm' /></p>
<p><input type='submit' value='전송 버튼' /></p>
</form>
</body>
</html>
📁 templates/user.html
<!-- user.html -->
<!doctype html>
<html>
<body>
<ul>
{% for user in users %}
<li>{{ user }}</li>
{% endfor %}
{% if var %}
<h1>안녕한다. {{ var }}</h1>
{% endif %}
</ul>
</body>
</html>
🔍 주요 부분만 설명해보자면...
- @app.route()는 특정 URL이 호출되었을 때 실행할 함수를 지정할 때 사용됩니다.
- render_template() 함수는 HTML 파일을 불러오는 역할을 합니다.
- request.form과 request.args를 통해 사용자 입력 값을 받아올 수 있습니다.
- redirect()와 url_for()을 사용하면 특정 라우트(페이지)로 자연스럽게 이동할 수 있습니다.
👀 이렇게 파일이 여러 갠데 실행은?
- 위 전체 코드를 routes.py나 app.py로 저장한 뒤,
- templates/ 폴더에 HTML 파일들을 저장하고
- 터미널에서 해당 폴더로 이동 후에 python routes.py 혹은 python app.py를 입력하시면 됩니다!
🤔 44일차 회고
- Django를 경험했던 자로써 Flask는 정말 배우기 쉽고, 코드도 직관적이어서 입문자에게는 괜찮은 웹 프레임워크라고 느꼈습니다.
- 엄청 간단하긴 하지만, 웹 서비스를 직접 만들어보면서 백엔드 개발에 대한 감을 잡을 수 있었던 것 같습니다.
- 특히 URL 경로에 따라 다양한 처리를 해보고, 사용자가 입력한 값을 받아서 응답하는 과정도 흥미로웠습니다.
- 차차 Django나 FastAPI 같은 다른 프레임워크를 이용한 실습도 진행할텐데 특히나 FastAPI는 꼭 해보고 싶었던 프레임워크라 기대가 많이 됩니다!!
728x90
LIST
'부트캠프 > LG U+' 카테고리의 다른 글
🤔 Flask를 어떻게 배포할까? (0) | 2025.04.07 |
---|---|
🤔 Flask에 스타일 입혀주기 (1) | 2025.04.01 |
🤔 타이타닉에서 살아남기 (0) | 2025.03.27 |
🤔 요즘 어떤 강의가 가장 핫해...? (0) | 2025.03.19 |
🤔 RNN과 LSTM 그리고 BiLSTM (6) | 2025.03.18 |