Introduction to Django
What is Django?
Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design. It is free and open-source, with a vibrant community and extensive documentation. Django follows the Model-View-Controller (MVC) architectural pattern, which helps in organizing code in a structured manner.
Key Concepts
1. Models
Models in Django represent the data structure of your application. They are Python classes that define the fields and behaviors of the data you will be storing. Each model maps to a single database table.
class Book(models.Model): title = models.CharField(max_length=100) author = models.CharField(max_length=50) published_date = models.DateField() isbn = models.CharField(max_length=13) price = models.DecimalField(max_digits=5, decimal_places=2)
2. Views
Views handle the logic behind the scenes. They are Python functions or classes that take web requests and return web responses. Views interact with models to fetch data and render templates to generate the final HTML output.
from django.shortcuts import render from .models import Book def book_list(request): books = Book.objects.all() return render(request, 'book_list.html', {'books': books})
3. Templates
Templates are files that define the structure and layout of the HTML sent to the client. They allow you to separate the design from the logic. Django uses a templating language that allows for dynamic content and easy integration with views.
<html> <head> <title>Book List</title> </head> <body> <h1>Books</h1> <ul> {% for book in books %} <li>{{ book.title }} by {{ book.author }}</li> {% endfor %} </ul> </body> </html>
4. URLs
URLs map web addresses to views. Django uses a URLconf (URL configuration) to define the URL patterns for your application. This allows for clean and readable URLs that are easy to manage.
from django.urls import path from . import views urlpatterns = [ path('books/', views.book_list, name='book_list'), ]
5. Admin Interface
Django comes with a built-in admin interface that allows you to manage your application's data through a web-based interface. It is automatically generated based on your models and can be customized to suit your needs.
Why Use Django?
Django is known for its "batteries-included" philosophy, meaning it comes with many built-in features such as authentication, URL routing, template engine, and database schema migrations. This reduces the amount of code you need to write, allowing you to focus on building your application rather than reinventing the wheel.
Example: Creating a Simple Django Application
Let's create a simple Django application that lists books. We'll define a model, create a view, and render it using a template.
Step 1: Define the Model
class Book(models.Model): title = models.CharField(max_length=100) author = models.CharField(max_length=50) published_date = models.DateField() isbn = models.CharField(max_length=13) price = models.DecimalField(max_digits=5, decimal_places=2)
Step 2: Create the View
from django.shortcuts import render from .models import Book def book_list(request): books = Book.objects.all() return render(request, 'book_list.html', {'books': books})
Step 3: Define the URL
from django.urls import path from . import views urlpatterns = [ path('books/', views.book_list, name='book_list'), ]
Step 4: Create the Template
<html> <head> <title>Book List</title> </head> <body> <h1>Books</h1> <ul> {% for book in books %} <li>{{ book.title }} by {{ book.author }}</li> {% endfor %} </ul> </body> </html>
This simple example demonstrates how Django's components work together to create a functional web application.