1. What is Django?
- Django is a Python-based web framework that follows the Model-View-Template (MVT) architecture.
- Why Use Django?
- Fast development
- Secure by default
- Scalable and maintainable
2. Installation
pip install django
Verify Installation:
django-admin --version
3. Create a Django Project
django-admin startproject projectname cd projectname python manage.py runserver
- Access at: http://127.0.0.1:8000/
4. Project Structure
projectname/ │ ├── manage.py # Command-line utility ├── projectname/ # Project directory │ ├── __init__.py │ ├── asgi.py # ASGI config │ ├── settings.py # Project settings │ ├── urls.py # URL routing │ └── wsgi.py # WSGI config └── db.sqlite3 # Default SQLite database
5. Create an App
python manage.py startapp appname
Register the App in settings.py:
INSTALLED_APPS = [ 'appname', ]
6. Models (Database Design)
Define Models (in models.py):
from django.db import models class Post(models.Model): title = models.CharField(max_length=100) content = models.TextField() created_at = models.DateTimeField(auto_now_add=True)
Apply Migrations:
python manage.py makemigrations python manage.py migrate
7. Django Admin
python manage.py createsuperuser python manage.py runserver
- Access Admin Panel: http://127.0.0.1:8000/admin/
Register Model for Admin (in admin.py):
from .models import Post admin.site.register(Post)
8. Views (Business Logic)
Define Views (in views.py):
from django.shortcuts import render def home(request): return render(request, 'home.html', {'name': 'Django'})
9. URLs (Routing)
Map URLs (in urls.py):
from django.urls import path from appname import views urlpatterns = [ path('', views.home, name='home'), ]
10. Templates (Frontend Design)
Create HTML File (in templates/home.html):
<!DOCTYPE html> <html> <head> <title>Home</title> </head> <body> <h1>Welcome to {{ name }}!</h1> </body> </html>
11. Static Files (CSS, JS, Images)
Configure in settings.py:
STATIC_URL = '/static/'
Usage in Template:
{% load static %} <link rel="stylesheet" href="{% static 'css/style.css' %}">
12. Forms (User Input)
Create Form (in forms.py):
from django import forms class ContactForm(forms.Form): name = forms.CharField(max_length=100) email = forms.EmailField() message = forms.CharField(widget=forms.Textarea)
13. Query Data (ORM Queries)
# Get all objects Post.objects.all() # Filter objects Post.objects.filter(title__contains='Django') # Get single object Post.objects.get(id=1) # Create new entry Post.objects.create(title='New Post', content='Hello World!') # Update entry post = Post.objects.get(id=1) post.title = 'Updated Title' post.save() # Delete entry post.delete()
14. Middleware
Custom Middleware (in middleware.py):
from django.utils.timezone import now class TimingMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): print(f"Request at {now()}") response = self.get_response(request) return response
Add to settings.py:
MIDDLEWARE = [ 'appname.middleware.TimingMiddleware', ]
15. User Authentication
Login View (in views.py):
from django.contrib.auth import authenticate, login def user_login(request): user = authenticate(request, username='john', password='secret') if user: login(request, user)
16. Deployment
python manage.py collectstatic
- Use Gunicorn and Nginx for production deployment.
17. Common Django Commands
python manage.py runserver # Start server python manage.py makemigrations # Create migration files python manage.py migrate # Apply migrations python manage.py createsuperuser # Create admin user python manage.py collectstatic # Collect static files python manage.py shell # Django shell
18. Useful Shortcuts
- Django Shell:
python manage.py shell
- Check for Errors:
python manage.py check
Example: Simple Blog App
# models.py class Blog(models.Model): title = models.CharField(max_length=100) body = models.TextField() # views.py def blog_list(request): blogs = Blog.objects.all() return render(request, 'blog_list.html', {'blogs': blogs}) # urls.py path('blogs/', views.blog_list, name='blog_list')