Django

The web framework for perfectionists with deadlines

Django Overview

Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design. Built by experienced developers, it takes care of much of the hassle of web development, so you can focus on writing your app without needing to reinvent the wheel.

Initial release

July 2005

Stable release

4.2 (April 2023)

Written in

Python

License

BSD License

Key Features

Common Use Cases

Content Management

Building CMS platforms and blogs.

E-Commerce

Online stores with complex business logic.

Social Networks

User-generated content platforms.

Data-Driven Apps

Applications with complex database interactions.

Example Code

# Django model example
from django.db import models

class BlogPost(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    published_date = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey('auth.User', on_delete=models.CASCADE)

    def __str__(self):
        return self.title

# Django view example
from django.shortcuts import render, get_object_or_404
from .models import BlogPost

def post_list(request):
    posts = BlogPost.objects.filter(published_date__isnull=False).order_by('-published_date')
    return render(request, 'blog/post_list.html', {'posts': posts})

def post_detail(request, pk):
    post = get_object_or_404(BlogPost, pk=pk)
    return render(request, 'blog/post_detail.html', {'post': post})

# Django URL configuration example
from django.urls import path
from . import views

urlpatterns = [
    path('', views.post_list, name='post_list'),
    path('post/<int:pk>/', views.post_detail, name='post_detail'),
]

# Django template example (HTML)
"""
{% extends 'base.html' %}

{% block content %}
  <h1>Blog Posts</h1>
  {% for post in posts %}
    <article>
      <h2><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h2>
      <p>Published: {{ post.published_date }}</p>
      <p>{{ post.content|linebreaksbr }}</p>
    </article>
  {% endfor %}
{% endblock %}
"""

Learning Resources