On this page
Web Development with Flask and Django
Flask — Micro Framework
Minimal, flexible, ideal for APIs and small apps.
Setup
pip install flask
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route('/')
def home():
return "Hello, Flask!"
@app.route('/api/users', methods=['GET', 'POST'])
def users():
if request.method == 'POST':
data = request.get_json()
return jsonify({"created": data}), 201
return jsonify([{"id": 1, "name": "Alice"}])
if __name__ == '__main__':
app.run(debug=True)
Templates (Jinja2)
from flask import render_template
@app.route('/profile/<name>')
def profile(name):
return render_template('profile.html', name=name)
Django — Full-Stack Framework
Batteries included: ORM, admin, auth, forms, migrations.
Setup
pip install django
django-admin startproject mysite
cd mysite
python manage.py startapp blog
python manage.py migrate
python manage.py runserver
Models
# blog/models.py
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
python manage.py makemigrations
python manage.py migrate
Views and URLs
# blog/views.py
from django.shortcuts import render
from .models import Post
def post_list(request):
posts = Post.objects.all().order_by('-created_at')
return render(request, 'blog/list.html', {'posts': posts})
# blog/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post_list'),
]
Flask vs Django
| Aspect | Flask | Django |
|---|---|---|
| Size | Micro, minimal | Full-stack |
| Learning curve | Gentle | Steeper |
| Flexibility | High | Opinionated |
| Best for | APIs, microservices | CMS, enterprise apps |
| ORM | SQLAlchemy (add-on) | Built-in |
REST APIs
# Flask + Flask-RESTful or Django REST Framework
pip install djangorestframework
# DRF serializer + viewset pattern for production APIs
Both frameworks power production websites worldwide — choose based on project scope and team preference.