Начало работы
Короткий путь от пустого Django-проекта до рабочего снимка Django-GC.
Установка
pip install django-gc
INSTALLED_APPS = [
'django_gc',
'django.contrib.admin',
# ...
]
В production используйте общий кэш (Redis, Valkey или другой remote backend). Тесты используют locmem.
Django settings
Категории, ключи и ключ шифрования описываются в settings Django-проекта —
обычно в settings.py проекта или приложения. После INSTALLED_APPS
заполните три настройки:
GLOBAL_CONFIG_CATEGORIES— каталог категорийGLOBAL_CONFIG_DEFINITIONS— типизированные ключиGLOBAL_CONFIG_ENCRYPTION_KEY— секрет для значенийSECURE
from enum import StrEnum
from django_gc import CategoryDefinition, SettingDefinition, SettingType
class SettingKey(StrEnum):
MAINTENANCE_ENABLED = 'maintenance-enabled'
GLOBAL_CONFIG_CATEGORIES = [
CategoryDefinition(id=1, code='platform', name='Platform'),
]
GLOBAL_CONFIG_DEFINITIONS = [
SettingDefinition(
key=SettingKey.MAINTENANCE_ENABLED,
description='Maintenance mode',
default_value=False,
value_type=SettingType.BOOLEAN,
category_id=1,
),
]
GLOBAL_CONFIG_ENCRYPTION_KEY = 'replace-with-a-long-random-secret'
Без GLOBAL_CONFIG_ENCRYPTION_KEY значения SECURE хранятся открытым текстом.
Затем migrate:
python manage.py migrate
post_migrate создаёт отсутствующие категории и ключи. Уже существующие рабочие значения не перезаписываются.
Чтение и запись
from django_gc import get_value, set_value
enabled = get_value(SettingKey.MAINTENANCE_ENABLED)
set_value(SettingKey.MAINTENANCE_ENABLED, True)
Ключи держите в проектном StrEnum и передавайте член enum в get_value() и
set_value(). Строка тоже работает, но вызов через enum — рекомендуемый.