Команда diffsettings

Команда diffsettings выводит список всех настроек Django, которые отличаются от значений по умолчанию. Она применяется для быстрой проверки кастомизированных параметров конфигурации проекта. Команда особенно полезна при переходе между разными средами разработки или при отладке проблем с настройками.

Синтаксис

bashpython manage.py diffsettings [options]

Параметры

Команда поддерживает следующие опции:

bash--all или -a
  Показывает все настройки, включая те, что совпадают
  с настройками по умолчанию.

--default MODULE или -d MODULE
  Указывает модуль настроек по умолчанию для сравнения.
  По умолчанию используется django.conf.global_settings.

--output FORMAT или -o FORMAT
  Формат вывода. Доступны значения: hash (по умолчанию),
  unified. В формате hash выводятся только изменённые настройки,
  в формате unified отображаются полные блоки настроек.

--indent количество_пробелов
  Устанавливает отступ при выводе в формате unified.

Пример

Базовое использование команды для просмотра изменённых настроек:

bashpython manage.py diffsettings

Результат выполнения кода:

bashALLOWED_HOSTS = ['localhost', '127.0.0.1', 'example.com']
CSRF_COOKIE_SECURE = True
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3', ...}}
DEBUG = True
LANGUAGE_CODE = 'ru'
MEDIA_URL = '/media/'
SECRET_KEY = 'django-insecure-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
SESSION_COOKIE_SECURE = True
STATIC_URL = '/static/'
TIME_ZONE = 'Europe/Moscow'

Пример

Использование опции --all для отображения всех настроек, включая значения по умолчанию:

bashpython manage.py diffsettings --all

Результат выполнения кода:

bashABSOLUTE_URL_OVERRIDES = {}
ADMINS = []
ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'example.com']
APPEND_SLASH = True
AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend']
AUTH_PASSWORD_VALIDATORS = [
  {'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', ...},
  {'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', ...}
]
BASE_DIR = Path('/home/user/myproject')
CSRF_COOKIE_SECURE = True
DEBUG = True
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
...

Пример

Сравнение настроек с конкретным модулем по умолчанию с помощью опции --default:

bashpython manage.py diffsettings --default myapp.custom_settings

Результат выполнения кода:

bashCUSTOM_VAR = 'custom value'
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', ...}]

Пример

Вывод в формате unified для сравнения блоков настроек:

bashpython manage.py diffsettings --output unified --indent 4

Результат выполнения кода:

bash--- default
+++ current
@@ -1,5 +1,5 @@
 ALLOWED_HOSTS = []
-ALLOWED_HOSTS = ['localhost', '127.0.0.1']
+ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'example.com']
 DEBUG = False
-DEBUG = True
+DEBUG = False
 SECRET_KEY = 'django-insecure-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

Пример

Использование команды в скриптах для автоматической проверки конфигурации:

bash#!/bin/bash
python manage.py diffsettings --output hash > config_diff.txt
if [ -s config_diff.txt ]; then
  echo "Обнаружены изменения в настройках:"
  cat config_diff.txt
else
  echo "Настройки соответствуют стандартным"
fi

Результат выполнения кода:

bash"Обнаружены изменения в настройках:"
"ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'example.com']"
"DEBUG = True"

Смотрите также

  • команда check,
    которая проверяет проект на наличие проблем
  • команда runserver,
    которая запускает локальный сервер разработки
  • команда inspectdb,
    которая генерирует модели по существующей базе данных
  • команда shell,
    которая запускает интерактивную оболочку Django