Awesome Django

repository·main·Indexed 11 days ago

https://github.com/wsvincent/awesome-django

A curated list of high-quality third-party packages, resources, hosting providers, and tools related to the Django web framework. Includes categories for Admin themes, REST APIs (DRF, Django Ninja), GraphQL, async support, task queues (Celery, RQ), configuration management, testing utilities, and educational resources.

Tokens
3.4K
Snippets
2
Records
17
Agent score
45%

What's inside Awesome Django

  1. Explore Open Source Django Projects

    main

    For inspiration or to study real-world implementations, consider these diverse open-source projects built with Django:

  2. Explore Django educational resources and tutorials

    main

    A variety of learning paths are available for different skill levels:

  3. Select a Django Boilerplate or Starter Project

    main

    When starting a new Django project, you can choose from several specialized boilerplates depending on your requirements:

    Highly Customizable & Full-Bodied

    • cookiecutter-django: A comprehensive, highly customizable starter project.
    • wemake-django-template: A template focused heavily on code quality and security.
    • sidewinder: Focuses on developer experience, good defaults, and deployment.

    Containerized & Environment Specific

    • django-docker-template: Dockerized setup including Postgres, Gunicorn, and Traefik with Let's Encrypt auto-renewal.
    • djangox: Batteries-included starter for Pip, Pipenv, or Docker.

    Frontend Integrated

    • cookiecutter-vue-django: Fuses Vue SFCs with Django Templates.
    • django-react-boilerplate: Boilerplate for Django, React, Tailwind, and Webpack.

    Rapid Prototyping

    • BH2: Designed to get a new Django site started quickly.
  4. Lint and format Django templates

    main

    Use the following standalone tools to maintain clean and consistent HTML templates in your Django project:

    • djlint: A comprehensive tool to lint and format HTML templates.
    • djhtml: A dedicated indenter for Django and Jinja templates.
    • curlylint: An experimental linter for various template engines including Django, Jinja, and Nunjucks.
  5. Run the devd service

    main

    The devd service uses the ghcr.io/jefftriplett/devd:latest image to provide live watching capabilities. It is configured to run with the --livewatch command and maps port 8000 on the host to port 8000 in the container. The local directory is mounted to /srv/jekyll with a cached flag.

    devd:
        image: ghcr.io/jefftriplett/devd:latest
        command: ["--livewatch"]
        init: true
        ports:
          - 8000:8000
        volumes:
          - .:/srv/jekyll:cached
  6. Run the jekyll service

    main

    The jekyll service uses the jekyll/jekyll:latest image to serve a Jekyll site. It runs the command jekyll serve with several flags: --host 0.0.0.0, --port 4000, --livereload, --drafts, and --force_polling.

    Configuration Details:

    • Environment Variables: BUNDLE_PATH=/usr/local/bundle
    • Ports: Host port 4000 is mapped to container port 4000.
    • Volumes:
      • The current directory is mounted to /srv/jekyll:cached.
      • The local ./.vendor/bundle directory is mounted to /usr/local/bundle:cached to persist Ruby gems.
    jekyll:
        image: jekyll/jekyll:latest
        command: ["jekyll", "serve", "--host", "0.0.0.0", "--port", "4000", "--livereload", "--drafts", "--force_polling"]
        environment:
          - BUNDLE_PATH=/usr/local/bundle
        expose:
          - 4000
        init: true
        ports:
          - 4000:4000
        volumes:
          - .:/srv/jekyll:cached
          - ./.vendor/bundle:/usr/local/bundle:cached
  7. Explore Django Admin and Admin Theme packages

    main

    The following packages extend or theme the Django Admin interface:

    Admin Functionality

    • django-hijack: Allows admins to work on behalf of other users without knowing their credentials.
    • django-import-export: Provides integration for importing and exporting data via the admin.
    • django-admin-inline-paginator-plus: Adds pagination to admin inlines.
    • django-loginas / impostor / django-impersonate: Tools to allow staff/superusers to "log in as" or impersonate other users.
    • django-admin-env-notice: Visually labels the admin interface with the current environment (e.g., production, staging).
    • django-related-admin: Helper for writing list_displays across foreign key relationships.
    • django-admin-sortable2: Enables drag-and-drop ordering in the admin.
    • django-admin-collaborator: Adds real-time presence, edit locks, and chat using Channels and Redis.
    • dj-control-room: A control plane for operational tools (Redis, cache, Celery, etc.) inside the admin.

    Admin Themes

    • django-grappelli: A custom skin for the admin.
    • django-jazzmin: Uses AdminLTE 3 & Bootstrap 4 for a modern look.
    • django-admin-interface: Allows customizing colors, headers, and logos directly from the admin.
    • django-baton: A responsive admin based on Bootstrap 5.
    • django-unfold: A modern theme for seamless interface development.
    • django-daisy: A responsive dashboard built with daisyui.
    • django-admin-dracula: Dracula-themed admin.
  8. Recommended Python packages for Django development

    main

    The following Python packages are recommended for common Django development tasks:

    • Security & Data: bleach (sanitize inputs/forms), python-slugify (unicode slugs).
    • Code Quality: black (formatter), Ruff (fast linter/formatter), coveragepy (code coverage).
    • Testing & Data Generation: pytest (testing framework), faker (generate fake data).
    • Utilities: pillow (image processing), python-decouple (separate settings from code), sentry-python (error reporting).
    • Real-time: python-socketio (Socket.IO client/server implementation).
  9. Explore Django Testing and Debugging packages

    main

    Tools for testing, profiling, and debugging Django applications:

    Testing Utilities

    • pytest-django: Integration for using pytest features in Django.
    • django-test-plus: Additions to Django's default TestCase.
    • factory-boy: A replacement for test fixtures using object factories.
    • model-bakery: An object factory for Django models.
    • django-fakery: Implementation of creation methods backed by Faker.
    • django-waffle: Feature flagging (feature flippers).

    Debugging and Profiling

    • django-debug-toolbar: Configurable panels to debug requests and responses.
    • django-silk: Live profiling and inspection of HTTP requests and database queries.
    • django-perf-rec: Keeps detailed records of code performance.
    • Scout / New Relic: APM tools for timing middleware, views, and SQL queries.
    • pyinstrument / py-spy: Call stack and sampling profilers.
  10. Explore Django Configuration and Settings packages

    main

    Packages to manage environment variables, secrets, and complex settings:

    • django-environ: Manages configuration via environment variables.
    • django-split-settings: Allows organizing settings into multiple files.
    • django-constance: Stores dynamic settings in pluggable backends (Redis/Django models) with Admin integration.
    • django-configurations: Uses Python classes for composable, 12-factor app compliant settings.
    • dynaconf: Loads settings from multiple sources (files, env vars, Redis, Vault, etc.).
    • django-extra-settings: Manages typed extra settings via the Django admin.
    • environs: Simplified environment variable parsing with a Django helper.
    • django-classy-settings: Class-based settings for easy access to typed environment variables.