Django Cheatsheet

⚙️ Django Setup & Basics

# Install Django
pip install django

# Create project
django-admin startproject myproject

# Run development server
python manage.py runserver

# Create app
python manage.py startapp blog

# Add app in settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'blog',
]

📦 Models

# blog/models.py
from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

# Apply migrations
python manage.py makemigrations
python manage.py migrate

🛠️ Admin Panel

# blog/admin.py
from django.contrib import admin
from .models import Post

admin.site.register(Post)

# Create superuser
python manage.py createsuperuser

👀 Views

# blog/views.py
from django.http import HttpResponse
from django.shortcuts import render

def home(request):
    return HttpResponse("Hello, Django!")

def about(request):
    return render(request, 'about.html')

🔗 URLs

# blog/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),
    path('about/', views.about, name='about'),
]

# myproject/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')),
]

🎨 Templates

# settings.py
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / "templates"],
    },
]

# blog/views.py
def home(request):
    return render(request, 'home.html', {"name": "Maxon"})

# templates/home.html
<h1>Welcome, {{ name }}!</h1>

🖼️ Static & Media Files

# settings.py
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / "media"

# template usage
<link rel="stylesheet" href="{% static 'css/style.css' %}">
<img src="{{ MEDIA_URL }}profile.jpg" alt="Profile">

# load static in template
{% load static %}

🧮 ORM Queries

# Create
post = Post.objects.create(title="First Post", content="Hello World")

# Read
posts = Post.objects.all()
post = Post.objects.get(id=1)

# Filter
Post.objects.filter(title__contains="Hello")

# Update
post.title = "Updated Title"
post.save()

# Delete
post.delete()

🔐 Authentication

# settings.py
LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = '/'

# urls.py
from django.contrib.auth import views as auth_views

urlpatterns = [
    path('login/', auth_views.LoginView.as_view(), name="login"),
    path('logout/', auth_views.LogoutView.as_view(), name="logout"),
]

# template (login.html)
<form method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">Login</button>
</form>

🌐 Django REST Framework

# Install
pip install djangorestframework

# settings.py
INSTALLED_APPS = [
    'rest_framework',
    'blog',
]

# blog/serializers.py
from rest_framework import serializers
from .models import Post

class PostSerializer(serializers.ModelSerializer):
    class Meta:
        model = Post
        fields = '__all__'

# blog/views.py
from rest_framework import viewsets
from .models import Post
from .serializers import PostSerializer

class PostViewSet(viewsets.ModelViewSet):
    queryset = Post.objects.all()
    serializer_class = PostSerializer

# myproject/urls.py
from rest_framework import routers
from blog.views import PostViewSet

router = routers.DefaultRouter()
router.register(r'posts', PostViewSet)

urlpatterns = [
    path('api/', include(router.urls)),
]

💡 Pro Tips

# Debugging
python manage.py shell

# Create requirements file
pip freeze > requirements.txt

# Collect static files
python manage.py collectstatic

# Run tests
python manage.py test

# Deployment (Gunicorn + Nginx)
pip install gunicorn
gunicorn myproject.wsgi

Post a Comment