Команда diffsettings
Команда diffsettings выводит список всех настроек Django,
которые отличаются от значений по умолчанию. Она применяется
для быстрой проверки кастомизированных параметров конфигурации
проекта. Команда особенно полезна при переходе между разными
средами разработки или при отладке проблем с настройками.
Синтаксис
python manage.py diffsettings [options]
Параметры
Команда поддерживает следующие опции:
--all или -a
Показывает все настройки, включая те, что совпадают
с настройками по умолчанию.
--default MODULE или -d MODULE
Указывает модуль настроек по умолчанию для сравнения.
По умолчанию используется django.conf.global_settings.
--output FORMAT или -o FORMAT
Формат вывода. Доступны значения: hash (по умолчанию),
unified. В формате hash выводятся только изменённые настройки,
в формате unified отображаются полные блоки настроек.
--indent количество_пробелов
Устанавливает отступ при выводе в формате unified.
Пример
Базовое использование команды для просмотра изменённых настроек:
python manage.py diffsettings
Результат выполнения кода:
ALLOWED_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 для отображения всех настроек,
включая значения по умолчанию:
python manage.py diffsettings --all
Результат выполнения кода:
ABSOLUTE_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:
python manage.py diffsettings --default myapp.custom_settings
Результат выполнения кода:
CUSTOM_VAR = 'custom value'
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', ...}]
Пример
Вывод в формате unified для сравнения блоков настроек:
python manage.py diffsettings --output unified --indent 4
Результат выполнения кода:
--- 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'
Пример
Использование команды в скриптах для автоматической проверки конфигурации:
#!/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
Результат выполнения кода:
"Обнаружены изменения в настройках:"
"ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'example.com']"
"DEBUG = True"