{"library":"django-extensions","title":"Django Extensions","description":"Django Extensions is a comprehensive collection of custom extensions for the Django Framework, designed to enhance development workflow. It includes a wide array of management commands (e.g., `shell_plus`, `runserver_plus`, `graph_models`), additional database fields, and admin interface improvements. Currently at version 4.1, it maintains an active release cadence, frequently updating to support the latest Django and Python versions.","status":"active","version":"4.1","language":"en","source_language":"en","source_url":"https://github.com/django-extensions/django-extensions","tags":["django","extensions","management commands","developer tools","admin","productivity"],"install":[{"cmd":"pip install django-extensions","lang":"bash","label":"Install stable version"}],"dependencies":[{"reason":"Required for the `runserver_plus` management command for enhanced debugging capabilities.","package":"Werkzeug","optional":true},{"reason":"Optional, but highly recommended for `graph_models` to output directly to image files. Requires system-wide Graphviz installation.","package":"pygraphviz","optional":true},{"reason":"Optional, alternative to `pygraphviz` for `graph_models` to output directly to image files. Requires system-wide Graphviz installation.","package":"pydot","optional":true},{"reason":"Required for the `mail_debug` management command (as of version 4.0).","package":"aiosmtpd","optional":true},{"reason":"Required for the `export_emails` management command.","package":"vobject","optional":true}],"imports":[{"symbol":"AutoSlugField","correct":"from django_extensions.db.models.fields import AutoSlugField"},{"symbol":"CreationDateTimeField","correct":"from django_extensions.db.models.fields import CreationDateTimeField"},{"symbol":"ModificationDateTimeField","correct":"from django_extensions.db.models.fields import ModificationDateTimeField"},{"symbol":"RandomCharField","correct":"from django_extensions.db.models.fields import RandomCharField"},{"symbol":"ShortUUIDField","correct":"from django_extensions.db.models.fields import ShortUUIDField"},{"symbol":"JSONField","correct":"from django_extensions.db.models.fields import JSONField"}],"quickstart":{"code":"# settings.py\nINSTALLED_APPS = [\n    # ... other Django apps\n    'django_extensions',\n    # ...\n]\n\n# Then, run management commands from your project root:\n# python manage.py shell_plus\n# python manage.py runserver_plus\n# python manage.py graph_models -a -o my_project_models.png","lang":"python","description":"To integrate Django Extensions into your project, add 'django_extensions' to your `INSTALLED_APPS` setting. After installation, you can immediately access the enhanced management commands through `python manage.py <command_name>`."},"warnings":[{"fix":"Ensure your build tooling (e.g., pip, build) is up-to-date and supports `pyproject.toml` based builds. For most users installing via `pip install django-extensions`, this change is transparent.","message":"Starting with version 4.0, Django Extensions transitioned from `setup.cfg` / `setup.py` to `pyproject.toml` for project configuration. This change primarily affects packaging and build systems for contributors or those installing from source.","severity":"breaking","affected_versions":"4.0+"},{"fix":"Install the `aiosmtpd` package (`pip install aiosmtpd`) if you use the `mail_debug` command. Ensure your Python version is compatible with `aiosmtpd` (Python >=3.9 for `aiosmtpd` 1.4.6).","message":"The `mail_debug` command was updated in version 4.0 to use `aiosmtpd` for its SMTP server implementation. The old `smtpd` module from the Python standard library is deprecated in Python 3.6 and removed in Python 3.12.","severity":"breaking","affected_versions":"4.0+"},{"fix":"Install Graphviz on your operating system (e.g., `sudo apt-get install graphviz` on Debian/Ubuntu, `brew install graphviz` on macOS, or download from graphviz.org for Windows) and ensure its executables are in your system's PATH.","message":"The `graph_models` command, while requiring Python packages like `pygraphviz` or `pydot`, also relies on a *system-wide* installation of Graphviz to render images. Without it, the command will fail even if Python dependencies are met.","severity":"gotcha","affected_versions":"All"},{"fix":"Ensure `Werkzeug` is installed (`pip install Werkzeug`). If errors persist, try downgrading `Werkzeug` to a known stable version (e.g., `Werkzeug==0.16.1` has been a historical workaround for some users) or check for specific compatibility notes in the `django-extensions` changelog.","message":"The `runserver_plus` command requires `Werkzeug`. While typically installing `Werkzeug` resolves this, some users have reported issues with specific `Werkzeug` versions leading to `CommandError: Werkzeug is required...` or `KeyError: 'werkzeug.server.shutdown'`.","severity":"gotcha","affected_versions":"All"},{"fix":"Migrate any scripts or workflows using `python manage.py passwd` to `python manage.py changepassword`.","message":"The `passwd` management command was deprecated in version 3.0.0. Its functionality is now superseded by Django's built-in `changepassword` command.","severity":"deprecated","affected_versions":"3.0.0+"},{"fix":"Ensure your Django project runs on Django 4.2+ and your Python environment is 3.9+. For newer projects, consider Django 5.x and Python 3.12+ for full compatibility with the latest features and improvements.","message":"Django Extensions 4.1 officially requires Django 4.2 or later and Python 3.9 or later. Version 4.0 introduced support for Django 5.x and Python 3.12/3.13.","severity":"breaking","affected_versions":"4.1+"}],"env_vars":null,"last_verified":"2026-04-06T00:00:00.000Z","next_check":"2026-07-05T00:00:00.000Z"}