Skip to content

Latest commit

 

History

History
260 lines (193 loc) · 3.41 KB

File metadata and controls

260 lines (193 loc) · 3.41 KB

Flask Cheat Sheet

Installation

pip install flask

Basic Application

from flask import Flask

app = Flask(__name__)

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

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

Run the Application

python app.py

Routes

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

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

Dynamic Routes

@app.route("/user/<name>")
def user(name):
    return f"Hello, {name}"

@app.route("/post/<int:id>")
def post(id):
    return f"Post {id}"

HTTP Methods

from flask import request

@app.route("/login", methods=["GET", "POST"])
def login():
    if request.method == "POST":
        return "Form Submitted"
    return "Login Form"

Request Data

request.args.get("name")      # Query parameter
request.form["username"]      # Form data
request.json                  # JSON data

Returning JSON

from flask import jsonify

@app.route("/api")
def api():
    return jsonify({
        "message": "Success",
        "status": 200
    })

HTML Templates

from flask import render_template

@app.route("/")
def home():
    return render_template("index.html")

templates/index.html

<h1>{{ title }}</h1>
<p>{{ message }}</p>

Pass data:

return render_template(
    "index.html",
    title="Welcome",
    message="Hello Flask"
)

Forms

<form method="POST">
    <input type="text" name="username">
    <button type="submit">Submit</button>
</form>
username = request.form["username"]

Redirect

from flask import redirect, url_for

return redirect(url_for("home"))

URL Generation

url_for("home")
url_for("user", name="Alice")

Sessions

from flask import session

app.secret_key = "secret"

session["user"] = "Alice"

user = session.get("user")

Error Handling

@app.errorhandler(404)
def not_found(error):
    return "Page Not Found", 404

Static Files

Folder structure:

project/
│── app.py
│── static/
│   ├── style.css
│   └── logo.png
│── templates/
    └── index.html

Use in HTML:

<link rel="stylesheet"
href="{{ url_for('static', filename='style.css') }}">

Jinja Template Syntax

Variable:

{{ name }}

If statement:

{% if user %}
  Welcome
{% endif %}

Loop:

{% for item in items %}
  {{ item }}
{% endfor %}

REST API Example

@app.route("/users", methods=["GET"])
def users():
    return jsonify([
        {"id": 1, "name": "Alice"},
        {"id": 2, "name": "Bob"}
    ])

Project Structure

project/
│── app.py
│── templates/
│── static/
│── requirements.txt

Common Flask Imports

from flask import (
    Flask,
    request,
    jsonify,
    render_template,
    redirect,
    url_for,
    session
)

Useful Commands

pip install flask
pip freeze > requirements.txt
python app.py

Common HTTP Status Codes

Code Meaning
200 OK
201 Created
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
500 Internal Server Error