Flask Server

Flask HTML server using templates (Jinja2)

Project structure

project/
├── app.py
├── templates/
   ├── base.html
   └── index.html
└── static/
    └── style.css

Basic Flask HTML server (app.py)

from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def home():
    return render_template("index.html", title="Home")

@app.route("/users/<int:user_id>")
def user(user_id):
    return render_template(
        "index.html",
        title="User Page",
        user_id=user_id,
        name="Alice"
    )

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

Base template (templates/base.html)

Page template (templates/index.html)

5. Static CSS (static/style.css)

Main Flask template keyworks

| | render_template() | renders HTML | | {{ variable }} | insert Python values | | {% if %}, {% for %} | logic | | {% extends %} | template inheritance | | url_for('static', filename=...) | static files |

Common template patterns

  • Loop

  • Conditional

7. Example URLs

API server

Dependencies

Flask API Server

  • Write app.py

  • Run the server

Web client

Web Socket server

Dependencies

Flask WebSocket server

Simple JavaScript client

Flask response types

String

Tuple (body, status, headers)

Response

jsonify()

make_response()

render_template()

render_template_string()

abort() (error + redirect-like flow stop)

send_file()

send_from_directory()

Streaming response

Redirect (URL or endpoint)

  • Redirect to a URL

  • Redirect to a Flask endpoint

  • Redirect with status code

Common codes:

Code

Description

302

default

301

permanent

303

after POST (recommended)

307

preserve method

Last updated