Flask Cheatsheet

⚙️ Flask Setup & Basics

# Install Flask
pip install flask

# hello.py
from flask import Flask
app = Flask(__name__)

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

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

🔗 Routing

from flask import Flask
app = Flask(__name__)

@app.route("/")
def index():
    return "Home Page"

@app.route("/about")
def about():
    return "About Page"

# Dynamic routes
@app.route("/user/<username>")
def user(username):
    return f"Hello, {username}!"

🎨 Templates (Jinja2)

from flask import render_template

@app.route("/hello/<name>")
def hello(name):
    return render_template("hello.html", name=name)

# templates/hello.html
<h1>Hello, {{ name }}!</h1>

{% if name == "Maxon" %}
  <p>Welcome back, admin!</p>
{% endif %}

🖼️ Static Files

# Directory structure
/project
   /static
      style.css
   /templates
      index.html

# templates/index.html
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
<img src="{{ url_for('static', filename='logo.png') }}" alt="Logo">

📩 Forms & Request Data

from flask import request

@app.route("/login", methods=["GET", "POST"])
def login():
    if request.method == "POST":
        username = request.form["username"]
        password = request.form["password"]
        return f"Logged in as {username}"
    return '''
    <form method="post">
        <input name="username">
        <input name="password" type="password">
        <button type="submit">Login</button>
    </form>
    '''

↪️ Redirects & URL Building

from flask import redirect, url_for

@app.route("/admin")
def admin():
    return "Admin Page"

@app.route("/user/<name>")
def user(name):
    if name == "admin":
        return redirect(url_for("admin"))
    return f"Welcome {name}"

🔐 Sessions

from flask import session

app.secret_key = "supersecretkey"

@app.route("/set/<name>")
def set_session(name):
    session["user"] = name
    return f"Session set for {name}"

@app.route("/get")
def get_session():
    return f"Logged in as {session.get('user')}"

🗄️ Database with SQLAlchemy

pip install flask_sqlalchemy

from flask_sqlalchemy import SQLAlchemy

app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///site.db"
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)

# Create DB
with app.app_context():
    db.create_all()

# Insert Data
user = User(username="Maxon")
db.session.add(user)
db.session.commit()

# Query
User.query.all()

🌐 REST API (Flask-RESTful)

pip install flask-restful

from flask_restful import Resource, Api

api = Api(app)

class Hello(Resource):
    def get(self):
        return {"message": "Hello, API"}

api.add_resource(Hello, "/api")

# Run: GET /api → {"message": "Hello, API"}

🔑 Authentication (Flask-Login)

pip install flask-login

from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user

login_manager = LoginManager(app)
login_manager.login_view = "login"

class User(UserMixin):
    id = 1
    username = "admin"
    password = "1234"

users = {"admin": User()}

@login_manager.user_loader
def load_user(user_id):
    return users.get("admin")

@app.route("/login")
def login():
    user = users["admin"]
    login_user(user)
    return "Logged in!"

@app.route("/dashboard")
@login_required
def dashboard():
    return f"Welcome {current_user.username}"

💡 Pro Tips

# Run with auto reload
flask run --debug

# Environment Variables
export FLASK_APP=hello.py
export FLASK_ENV=development

# Virtual Environment
python -m venv venv
source venv/bin/activate  # (Linux/Mac)
venv\Scripts\activate     # (Windows)

# Deploy with Gunicorn
pip install gunicorn
gunicorn hello:app

Post a Comment