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>