⬅ Previous Next ➡

Web Development with Python

Flask vs Django (Overview)
  • Flask is a lightweight micro web framework (simple, flexible).
  • Django is a full-stack framework (admin panel, ORM, auth, security built-in).
  • Flask is good for small/medium apps and APIs.
  • Django is good for large apps with faster development using built-in features.
Flask App Setup (Install + First App)
  • Install Flask using pip.
  • Create app.py and run the server.
# Install
pip install flask

# app.py
from flask import Flask

app = Flask(__name__)

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

if __name__ == "__main__":
    app.run(debug=True)
Routing in Flask (Multiple Routes)
  • @app.route() maps URL path to a function.
  • Dynamic routing using <variable> in URL.
from flask import Flask

app = Flask(__name__)

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

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

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

if __name__ == "__main__":
    app.run(debug=True)
Templates in Flask (Jinja2)
  • Templates are HTML files stored in templates/ folder.
  • Use render_template() to render HTML.
  • Jinja2 supports variables and loops.
# app.py
from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def home():
    students = ["A", "B", "C"]
    return render_template("home.html", students=students)

# templates/home.html
<h2>Students</h2>
<ul>
  {% for s in students %}
    <li>{{ s }}</li>
  {% endfor %}
</ul>
Form Handling (GET/POST)
  • Use methods=["GET","POST"] for form submission.
  • Use request.form to read form values.
from flask import Flask, render_template, request

app = Flask(__name__)

@app.route("/login", methods=["GET", "POST"])
def login():
    if request.method == "POST":
        username = request.form.get("username")
        return f"Welcome {username}"
    return render_template("login.html")

# templates/login.html
<form method="post">
  <input type="text" name="username" placeholder="Username">
  <button type="submit">Login</button>
</form>
Sessions in Flask
  • Session stores user data between requests (login state).
  • Flask requires SECRET_KEY for sessions.
from flask import Flask, request, session, redirect, url_for

app = Flask(__name__)
app.secret_key = "my_secret_key"

@app.route("/set", methods=["POST"])
def set_session():
    session["user"] = request.form.get("user")
    return redirect(url_for("profile"))

@app.route("/profile")
def profile():
    user = session.get("user")
    if not user:
        return "Not logged in"
    return f"Hello {user}"

@app.route("/logout")
def logout():
    session.pop("user", None)
    return "Logged out"
Database Integration (SQLite with Flask)
  • Use sqlite3 for simple DB integration.
  • Create table and insert records using cursor.
import sqlite3
from flask import Flask, request

app = Flask(__name__)

def get_conn():
    return sqlite3.connect("app.db")

@app.route("/init")
def init():
    conn = get_conn()
    cur = conn.cursor()
    cur.execute("""
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL
    )
    """)
    conn.commit()
    conn.close()
    return "DB Initialized"

@app.route("/add", methods=["POST"])
def add_user():
    name = request.form.get("name")
    conn = get_conn()
    cur = conn.cursor()
    cur.execute("INSERT INTO users(name) VALUES (?)", (name,))
    conn.commit()
    conn.close()
    return "User Added"
Django Overview (Key Points)
  • Django follows MVT (Model-View-Template).
  • Built-in features: Admin panel, ORM, Authentication, Security.
  • Typical steps: create project → create app → define models → migrate → urls/views → templates.
# Install and start project
pip install django
django-admin startproject mysite
cd mysite
python manage.py startapp core
python manage.py runserver
⬅ Previous Next ➡