Django를 학습하다 보니 Flask 사용법을 많이 까먹었는데, 이번 프로젝트를 하나 진행하면서 Flask를 써야 할 일이 생겨 다시 처음부터 정리해가며 학습해보려고 합니다!
Flask 설치
pip install flask
pip을 이용해 flask를 설치해준다.
# app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
"""
run() 함수를 사용해서 우리가 개발한 어플리케이션을 로컬서버로 실행한다.
소스파일을 모듈이 아닌 python 인터프리터를 이용해서 직접 실행한다면
if __name__ == '__main__': 이 문장은 우리가 실행한 서버가 현재 동작되는 유일한 서버라는 것을 보장한다.
"""
app.run(debug=True)
그 후 위처럼 입력해준 후, python 파일이름.py 쓰면 flask 서버가 작동합니다! ex) python app.py
이때 주의해야할점은 파일 이름을 flask.py로 지을 경우 python flask.py로 호출할 때 Flask 자체와 충돌이 일어나기 때문에 주의해야 한다.
@app.route('/') 가 의미하는 것은 데코레이터를 이용해서 Flask에게 어떤 URL이 작성된 함수를 실행시키는지 알려주기 위해 함수 위에 써줍니다.
마지막 줄의 app.run() 은 개발한 애플리케이션을 로컬 서버로 실행하는 것으로, 이때 if__name__ == '__main__' 을 통해 현재 동작되는 서버가 유일한 서버라는 것을 보장합니다!
디버그 모드 추가하기!
현재 위의 코드처럼 작성하고 서버를 실행할 경우 코드를 변경하게 된다면 서버를 수동으로 종료하고 다시 시작하는 과정을 반복해야 하는데, 이런 번거로운 것을 개선하기 위해 Flask에서는 Debug모드를 제공한다.
Debug모드를 사용하는 방법은 두 가지가 있다.
첫 번째는 애플리케이션 객체에 플래그로 설정하는 방식
app.debug = True
app.run()
두 번째는 애플리케이션을 실행할 때 파라미터로 넘겨주는 방식
app.run(debug=True)
이 두 가지 방법은 같은 결과를 보여주기 때문에 저는 두 번째 방법이 더 편해서 파리 미터로 넘겨주는 방식을 사용하기로 했습니다!
URL 변수 부분 추가
URL의 변수 부분을 추가하기 위해서 <variable_name>을 추가해 url에 특별한 영역으로 표시해줘야 한다.
@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
위 코드는 /user/<username>을 통해 url에 username에 적혀있는 값을 그대로 출력해줍니다.
이때 converter의 종류는 3가지이다.
int | 정수형 |
float | 소수형 |
path | defualt와 비슷하지만 슬래쉬 까지 사용가능 |
템플릿 렌더링
지금까지는 return에 html에 표시할 내용을 직접 작성했지만 Flask는 진자 템플릿 엔진으로 구성하여 자동으로 HTML 이스 케이 핑을 한다.
이를 위해 render_template() 메서드를 사용하면 가능합니다!
from flask import render_template
@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
return render_template('hello.html', name=name)
{# hello.html #}
<!doctype html>
<title>Hello from Flask</title>
{% if name %}
<h1>Hello {{ name }}!</h1>
{% else %}
<h1>Hello World!</h1>
{% endif %}
위처럼 작성할 경우, {% if name %} 때문에 url에 name값이 들어왔을 경우와 안 들어왔을 경우에 따라 다른 값을 보여줄 수 있다.
'Study > Flask' 카테고리의 다른 글
[ Flask SQLAlchemy ] SQLAlchemy를 사용하여 엑셀파일 데이터를 DB에 넣기 (0) | 2021.12.30 |
---|---|
[ Flask SQLAlchemy ] SQLAlchemy를 사용하여 엑셀파일 데이터를 DB에 넣기 (0) | 2021.12.30 |
[ Flask ] Flask에서 SQLAlchemy 사용하기! [ Flask ORM ] (2) | 2021.12.30 |
[Flask] 플라스크 동적 페이지 라우팅과 요청 (POST) (0) | 2021.12.18 |
[Flask] Flask에서 pymongo 사용하기! (0) | 2021.12.17 |