Skip to main content

Intelligent CLI tool to manage Django INSTALLED_APPS with smart package mapping and requirements.txt management

Project description

django-include-apps

PyPI version Python Versions Django Versions License: MIT Downloads Downloads/Month Code style: black Maintained

A powerful CLI tool to intelligently manage Django apps in your INSTALLED_APPS setting. Install, add, remove, and maintain Django packages with smart package mapping and automatic requirements.txt management.

Features

  • Smart Package Mapping — 85+ pre-configured mappings (e.g., djangorestframeworkrest_framework)
  • Extended Configs — Auto-apply middleware, settings, URL patterns, and imports per package
  • Auto Migrations — Prompt to run python manage.py migrate when adding/removing packages that need it
  • Version Specifiers — Install exact versions (djangorestframework==3.14.0, django-filter>=2.0)
  • Unused App Detection — Scan your project and remove apps not imported anywhere
  • requirements.txt Sync — Automatically add, update, and remove packages
  • Backup & Rollback — Auto-backup settings.py with one-command restore
  • Security — Move secrets to .env with secure-settings
  • Health Checks — Run doctor to audit your configuration
  • Interactive Prompts — Confirmations, multi-select, and skip options throughout
  • Shell Completion — Tab-completion for bash, zsh, and fish

Installation

pip install django-include-apps

Quick Start

Add a Package

django-include-apps add-app djangorestframework
 IMPORTANT: Configurations applied are based on the latest package documentation.

✅ djangorestframework installed via pip
✅ Added 'rest_framework' to INSTALLED_APPS

Configuration for: djangorestframework
  • URL Pattern: path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
  • Settings:
      REST_FRAMEWORK = {
          "DEFAULT_PERMISSION_CLASSES": ["rest_framework.permissions.IsAuthenticated"],
          "DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.PageNumberPagination",
          "PAGE_SIZE": 10,
          ...
      }

? Found additional configuration for package 'djangorestframework' (Space to toggle):
  [x] URL Patterns
  [x] Required Settings
? Proceed? Yes, apply changes

✅ Added URL pattern 'api-auth/'
✅ Added REST_FRAMEWORK settings
✅ Added djangorestframework==3.15.2 to requirements.txt

Add Multiple Packages

django-include-apps add-app djangorestframework django-cors-headers django-filter

Remove an App

# Remove a specific app
django-include-apps remove-app rest_framework

# Or scan for unused apps (interactive)
django-include-apps remove-app

Install from requirements.txt

django-include-apps install-requirements -r requirements.txt

Installs all packages, detects Django-related ones, and offers to add them to INSTALLED_APPS with extended configuration.

Custom Project Directory

django-include-apps add-app djangorestframework -d /path/to/django/project

All commands accept --start-dir / -d to target a specific project.

Commands Overview

Command Description
add-app Add one or more apps to INSTALLED_APPS
remove-app Remove apps or scan for unused ones
install-requirements Install from requirements.txt and configure apps
status Show project configuration overview
doctor Run health checks on your project
show-config Display extended config for a package
view-mappings Browse all 85+ package mappings
diff Preview changes before applying (dry run)
sync Compare INSTALLED_APPSrequirements.txt
update-configs Check for updated package configurations
graph Visualize package dependencies
profile Save/apply/export configuration profiles
init-env Create a virtual environment
secure-settings Move secrets to .env
rollback Restore settings.py from backup
setup-hooks Set up pre-commit hooks
docker-init Generate Docker configuration
tutorial Interactive learning guide
completion Shell auto-completion setup
mapping Manage custom package mappings

📖 Full Command Reference → — Every command with all flags, variants, and sample output.

Supported Packages

85+ pre-configured Django packages with smart mapping:

Package INSTALLED_APPS Name
djangorestframework rest_framework
django-cors-headers corsheaders
django-filter django_filters
django-allauth allauth
django-debug-toolbar debug_toolbar
django-crispy-forms crispy_forms
django-extensions django_extensions
channels channels
celery celery
django-storages storages

Note: Packages like pillow, psycopg2, gunicorn, and mysqlclient are dependency-only and aren't added to INSTALLED_APPS.

Disclaimer on configurations: The automatic configuration settings provided by django-include-apps (for MIDDLEWARE, urls.py, etc.) are based on the standard and latest documentation of the respective packages at the time of mapping.

Use django-include-apps view-mappings to see the complete list. Unmapped packages are handled interactively with an option to save for future use.

Protected Django Apps

Core Django apps (django.contrib.*) are automatically protected from removal:

admin · auth · contenttypes · sessions · messages · staticfiles

Requirements

  • Python 3.8+
  • Django project with settings.py
  • Virtual environment (recommended)

Example Project

A ready-to-use demo project is included to try every command hands-on:

cd django-include-apps/examples/demo_project
django-include-apps add-app djangorestframework
django-include-apps status

📂 See the demo project →

Contributing

Contributions are welcome! To add a new package mapping:

  1. Fork the repository
  2. Add the mapping to package_configs.json
  3. Submit a pull request

Have a feature idea? Open an issue.

License

MIT License — see LICENSE for details.

Author

ROHANGitHub · Email

Contributors

  • Rohan Shirude — remove-app functionality and feature enhancements

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_include_apps-1.1.1.tar.gz (48.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_include_apps-1.1.1-py3-none-any.whl (45.6 kB view details)

Uploaded Python 3

File details

Details for the file django_include_apps-1.1.1.tar.gz.

File metadata

  • Download URL: django_include_apps-1.1.1.tar.gz
  • Upload date:
  • Size: 48.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.0

File hashes

Hashes for django_include_apps-1.1.1.tar.gz
Algorithm Hash digest
SHA256 3ce6807052df4ef803f81f1c33f348ca555d3b517b830a9bce489acb9cf8195c
MD5 ea13a6be14675c037a4861063ac45b82
BLAKE2b-256 0ccbd056ed94f3572861e24c2b7b58036f4cba62a411aaa4e58073c743e34c32

See more details on using hashes here.

File details

Details for the file django_include_apps-1.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for django_include_apps-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 50d9a08e20e5226ef2c305a668ef12719781990651f619353acf46eb7684b424
MD5 2d67de60ebd3ab35263a1d2ce944fc7e
BLAKE2b-256 0013d11ec7dc1e12ffa81603f8d17a50981006a85696ae6aa49482448c26eb42

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page