$ pip install flask
flask_app
└── __init__.py
# __init__.py 에 코드가 담긴다.
from flask import Flask
app = Flask(__name__)
# CLI로 시행시 상위디렉토리에서 실행한다.
$ FLASK_APP=flask_app flask run
URL에 따라 실행할 함수 지정
즉, /는 엔드포인트를 의미한다
동일한 라우트가 여러개 있는 경우 가장 먼저 엔드포인트 조건이 맞는 라우트 사용
# __init__.py 에 코드가 담긴다.
from flask import Flask
app = Flask(__name__)
# 애플리케이션의 루트주소에 접속했을 때 실행
@app.route('/')
def index():
return 'Hello World!'
Flask 의 라우트 데코레이터를 사용할 때
기본적 허용 메서드 : GET, HEAD, OPTIONS
methods 인자 사용 메서드 : POST, PUT, PATCH, DELETE
@app.route('/', methods=['POST', 'GET'])
def index():
...
라우트 설정시 엔드포인트에 <>를 사용하여 변수를 받을 수 있다.
# <>안에서 타입변경 가능하다.
@app.route('/index/<num>')
def index_number(num):
# 인수는 문자열타입으로 들어온다.
return 'Welcome to Index %i' % int(num)
값을 넘겨주지 않을 경우 아래와 같다.
@app.route('/index/', defaults={ 'num' : 0 })
@app.route('/index/<num>')
def index_number(num):
return 'Welcome to Index %i' % int(num)
라우트를 기능별로 나누는 것
flask_app
├── __init__.py
└── routes
└── user_routes.py
user_routes.py 안에는 아래의 코드를 작성한다.
# user_routes.py
from flask import Blueprint
# 블루프린트 명칭, 블루프린트 import이름, URL 접두어의미
bp = Blueprint('user', __name__, url_prefix='/user')
@bp.route('/')
def index():
return 'User index page'
init.py에서 불러와서 사용가능하다.
# __init__.py
from flask import Flask
from flask_app.routes import user_routes
app = Flask(__name__)
app.register_blueprint(user_routes.bp)
@app.route('/')
def index():
return 'Hello World!'
애플리케이션을 만드는 함수를 만든다.
from flask import Flask
def create_app():
app = Flask(__name__)
from yourapplication.views.admin import admin
from yourapplication.views.frontend import frontend
app.register_blueprint(admin)
app.register_blueprint(frontend)
return app
if __name__ == "__main__":
app = create_app()
app.run()
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '''
<html>
<head>
<title>
HTML Page
</title>
</head>
<body>
<h1>Writing HTML...</h1>
</body>
</html>
'''
Flask의 render_template를 이용한다.
폴더내에 HTML파일을 넣어놓고 불러온다.
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
# 폴더를 지정시 html의 경로를 지정해준다.
return render_template('index.html')