pluginagentmarketplace

Django Framework

2
1
# Install this skill:
npx skills add pluginagentmarketplace/custom-plugin-python --skill "Django Framework"

Install specific skill from multi-skill repository

# Description

Build production-ready web applications with Django MVC, ORM, authentication, and REST APIs

# SKILL.md


name: Django Framework
description: Build production-ready web applications with Django MVC, ORM, authentication, and REST APIs
version: "2.1.0"
sasmp_version: "1.3.0"
bonded_agent: 02-web-development
bond_type: PRIMARY_BOND

Skill Configuration

retry_strategy: exponential_backoff
observability:
logging: true
metrics: request_latency


Django Framework

Overview

Master Django, the high-level Python web framework that encourages rapid development and clean, pragmatic design. Learn to build secure, scalable web applications with Django's batteries-included approach.

Learning Objectives

  • Build full-stack web applications using Django MVC pattern
  • Design and implement database models with Django ORM
  • Implement user authentication and authorization
  • Create RESTful APIs with Django REST Framework
  • Deploy Django applications to production

Core Topics

1. Django Basics & Project Structure

  • Django project setup and configuration
  • Understanding MVT (Model-View-Template) pattern
  • URL routing and views
  • Django settings and environment variables
  • Static files and media handling

Code Example:

# myapp/views.py
from django.shortcuts import render
from django.http import JsonResponse
from .models import Product

def product_list(request):
    products = Product.objects.all()
    return render(request, 'products/list.html', {'products': products})

def product_api(request):
    products = Product.objects.values('id', 'name', 'price')
    return JsonResponse(list(products), safe=False)

2. Django ORM & Database Models

  • Model definition and field types
  • Relationships (ForeignKey, ManyToMany, OneToOne)
  • QuerySets and database queries
  • Migrations and schema management
  • Database optimization (select_related, prefetch_related)

Code Example:

# models.py
from django.db import models
from django.contrib.auth.models import User

class Category(models.Model):
    name = models.CharField(max_length=100)
    slug = models.SlugField(unique=True)
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        verbose_name_plural = "Categories"

    def __str__(self):
        return self.name

class Product(models.Model):
    name = models.CharField(max_length=200)
    description = models.TextField()
    price = models.DecimalField(max_digits=10, decimal_places=2)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    created_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
    is_active = models.BooleanField(default=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name

# Efficient querying
products = Product.objects.select_related('category', 'created_by').filter(is_active=True)

3. Authentication & Authorization

  • User registration and login
  • Password management
  • Session management
  • Permissions and groups
  • Custom user models
  • Social authentication

Code Example:

# views.py
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required, permission_required
from django.shortcuts import redirect, render

def login_view(request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect('dashboard')
    return render(request, 'login.html')

@login_required
def dashboard(request):
    return render(request, 'dashboard.html')

@permission_required('products.add_product')
def add_product(request):
    # Only users with 'add_product' permission can access
    return render(request, 'products/add.html')

4. Django REST Framework

  • Serializers and validation
  • ViewSets and routers
  • Authentication (JWT, Token)
  • Permissions and throttling
  • Pagination and filtering

Code Example:

# serializers.py
from rest_framework import serializers
from .models import Product, Category

class CategorySerializer(serializers.ModelSerializer):
    class Meta:
        model = Category
        fields = ['id', 'name', 'slug']

class ProductSerializer(serializers.ModelSerializer):
    category = CategorySerializer(read_only=True)
    category_id = serializers.IntegerField(write_only=True)

    class Meta:
        model = Product
        fields = ['id', 'name', 'description', 'price', 'category', 'category_id', 'created_at']

# views.py
from rest_framework import viewsets
from rest_framework.permissions import IsAuthenticatedOrReadOnly

class ProductViewSet(viewsets.ModelViewSet):
    queryset = Product.objects.all()
    serializer_class = ProductSerializer
    permission_classes = [IsAuthenticatedOrReadOnly]

    def get_queryset(self):
        queryset = super().get_queryset()
        category = self.request.query_params.get('category')
        if category:
            queryset = queryset.filter(category__slug=category)
        return queryset

Hands-On Practice

Project 1: Blog Application

Build a full-featured blog with user authentication.

Requirements:
- User registration and login
- Create, edit, delete posts
- Comments system
- Categories and tags
- Search functionality
- Admin interface

Key Skills: Django models, views, forms, authentication

Project 2: E-commerce API

Create a RESTful API for an e-commerce platform.

Requirements:
- Product catalog with categories
- Shopping cart management
- Order processing
- User authentication with JWT
- API documentation
- Rate limiting

Key Skills: Django REST Framework, serializers, authentication

Project 3: Task Management System

Build a collaborative task management application.

Requirements:
- User registration and teams
- Create and assign tasks
- Task status tracking
- File attachments
- Real-time notifications
- Permission-based access

Key Skills: Complex models, permissions, file handling

Assessment Criteria

  • [ ] Set up Django projects with proper structure
  • [ ] Design normalized database schemas
  • [ ] Implement CRUD operations efficiently
  • [ ] Secure applications with authentication
  • [ ] Build RESTful APIs following best practices
  • [ ] Write Django tests (unit and integration)
  • [ ] Deploy to production environment

Resources

Official Documentation

Learning Platforms

Tools

Next Steps

After mastering Django, explore:
- FastAPI - Modern, fast web framework
- Celery - Asynchronous task queue
- Docker - Containerization for deployment
- AWS/Heroku - Cloud deployment platforms

# Supported AI Coding Agents

This skill is compatible with the SKILL.md standard and works with all major AI coding agents:

Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.