Flask#
#
Install#
pip install flask
Hello World#
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello, World!"
app.run(debug=True)
Flask CLI#
export FLASK_APP=app.py
flask run
App Config & Environment#
App Object#
from flask import Flask
app = Flask(__name__)
Configuration#
app.config["DEBUG"] = True
app.config.from_pyfile("config.py")
Common Config Keys#
Key |
Description |
|---|---|
|
Enable debug mode |
|
For sessions/cookies |
|
Set to ‘development’ |
Routing & Methods#
Basic Route#
@app.route("/")
def home():
return "Home"
Methods#
@app.route("/login", methods=["GET", "POST"])
def login():
return "Login"
Dynamic Routes#
@app.route("/user/<name>")
def user(name):
return f"User: {name}"
Request & Response#
Request Object#
from flask import request
@app.route("/data", methods=["POST"])
def data():
return request.json
Request Attributes#
request.args: Query paramsrequest.form: Form datarequest.json: JSON body
Custom Response#
from flask import make_response
@app.route("/custom")
def custom():
res = make_response("Custom", 200)
res.headers["X-Test"] = "True"
return res
Templates & Static#
Render Template#
from flask import render_template
@app.route("/")
def page():
return render_template("index.html", name="Flask")
Jinja Syntax#
<h1>Hello {{ name }}</h1>
{% if name %}
<p>Hi!</p>
{% endif %}
Static Files#
<link href="{{ url_for('static', filename='style.css') }}" />
JSON API & Middleware#
JSON Response#
from flask import jsonify
@app.route("/api")
def api():
return jsonify(message="Hello")
Middleware#
@app.before_request
def before():
print("Before")
@app.after_request
def after(res):
print("After")
return res
Error Handling & Blueprints#
Error Handling#
@app.errorhandler(404)
def not_found(e):
return "Page not found", 404
Blueprint#
from flask import Blueprint
admin = Blueprint("admin", __name__, url_prefix="/admin")
@admin.route("/")
def dash():
return "Admin"
app.register_blueprint(admin)
Project Structure#
File Structure#
project/
├── app.py
├── templates/
│ └── index.html
├── static/
│ └── style.css
└── config.py
Run Server#
python app.py
# or using CLI
export FLASK_APP=app.py
flask run