Crash Course – Django
Course Outline:
Introduction to Django (5 minutes)
pip install django django-admin startproject myproject cd myproject python manage.py runserver
Creating a Django Project (10 minutes)
django-admin startproject myproject cd myproject python manage.py runserver
Creating a Django App (10 minutes)
python manage.py startapp myapp # Add 'myapp' to INSTALLED_APPS in settings.py
Models and Database (10 minutes)
# myapp/models.py
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
# Apply migrations
python manage.py makemigrations
python manage.py migrate
# Create admin user and register model
# myapp/admin.py
from django.contrib import admin
from .models import Post
admin.site.register(Post)
Views and Templates (10 minutes)
# myapp/views.py
from django.shortcuts import render
from .models import Post
def index(request):
posts = Post.objects.all()
return render(request, 'index.html', {'posts': posts})
# myapp/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
# myapp/templates/index.html
<!DOCTYPE html>
<html>
<head>
<title>My Blog</title>
</head>
<body>
<h1>Posts</h1>
{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.content }}</p>
{% endfor %}
</body>
</html>
Forms and User Input (10 minutes)
# myapp/forms.py
from django import forms
from .models import Post
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ['title', 'content']
# myapp/views.py (add form handling)
from .forms import PostForm
def create_post(request):
if request.method == 'POST':
form = PostForm(request.POST)
if form.is_valid():
form.save()
else:
form = PostForm()
return render(request, 'create_post.html', {'form': form})
# myapp/urls.py
urlpatterns = [
path('', views.index, name='index'),
path('create/', views.create_post, name='create_post'),
]
# myapp/templates/create_post.html
<!DOCTYPE html>
<html>
<head>
<title>Create Post</title>
</head>
<body>
<h1>Create a New Post</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Save</button>
</form>
</body>
</html>