Файл конфигурации module.json
Обновлено: 07 Декабрь 2025
Версия: 2.2
Файл module.json является обязательным для модулей, устанавливаемых из ZIP архива. Для локальных модулей, созданных вручную, этот файл не требуется, но может быть добавлен позже при создании версии модуля.
Пример конфигурации
{
"name": "Example Module",
"code": "example_module",
"version": "1.0.0",
"description": "Описание модуля",
"author": "Имя автора",
"min_system_version": "5.2.0",
"dependencies": [],
"category": "Business",
"tags": ["example", "demo"],
"menu": {
"title": "Example Module",
"icon": "bx bx-package",
"permission": "example_module.view",
"items": [
{
"title": "Dashboard",
"url": "/example/dashboard/",
"icon": "bx bx-dashboard",
"permission": "example_module.view_dashboard"
},
{
"title": "Settings",
"url": "/example/settings/",
"icon": "bx bx-cog",
"permission": "example_module.view_settings"
},
{
"title": "Submenu",
"icon": "bx bx-menu",
"items": [
{
"title": "Sub Item 1",
"url": "/example/sub/item1/",
"permission": "example_module.view_sub_item1"
},
{
"title": "Sub Item 2",
"url": "/example/sub/item2/",
"permission": "example_module.view_sub_item2"
}
]
}
]
},
"urls": [
{
"path": "example/",
"include": "example_module.urls",
"namespace": "example"
}
],
"settings": {
"app_name": "example_module",
"migrations": true
},
"notification_templates": {
"email": [
{
"name": "ExampleNotification",
"title": "Example Notification",
"subject": "Example: {title}",
"body": "Hello {user_name}, this is an example notification about {title}.",
"note": "Example email notification template",
"section": "Example Module"
}
],
"messenger": [
{
"name": "ExampleNotification",
"title": "Example Notification",
"body": "Hello {user_name}, this is an example notification about {title}.",
"note": "Example messenger notification template",
"section": "Example Module"
}
]
}
}
Важно: Меню поддерживает до 3 уровней вложенности подменю.
Описание полей
Основные поля
- name (обязательно): Название модуля
- code (обязательно): Уникальный код модуля (используется для идентификации)
- version (обязательно): Версия модуля (формат: X.Y.Z)
- description: Описание модуля
- author: Автор модуля
- min_system_version: Минимальная версия системы (Django)
- dependencies: Список зависимостей от других модулей
- category: Категория модуля
- tags: Список тегов для поиска
Меню (menu)
Конфигурация пункта меню в боковой панели:
- title: Название пункта меню
- icon: CSS класс иконки (например, "bx bx-package")
- permission: Право доступа для отображения пункта меню
- items: Список подпунктов меню
- title: Название подпункта
- url: URL подпункта
- icon: CSS класс иконки
- permission: Право доступа
- items: Вложенные подпункты (поддержка до 3 уровней вложенности)
URLs (urls)
Список URL маршрутов для регистрации:
- path: Путь URL (например, "example/")
- include: Путь к модулю urls (например, "example_module.urls")
- namespace: Пространство имен (опционально)
Настройки (settings)
- app_name (обязательно): Имя Django приложения
- migrations: Выполнять ли миграции при установке (по умолчанию: true)
Шаблоны уведомлений (notification_templates)
Модули могут определять свои шаблоны уведомлений для email и мессенджеров.
Структура:
{
"notification_templates": {
"email": [
{
"name": "TemplateName",
"title": "Template Title",
"subject": "Email subject with {variables}",
"body": "Email body with {variables}",
"style": "CSS styles (optional)",
"note": "Template description (optional)",
"section": "Section name (optional)"
}
],
"messenger": [
{
"name": "TemplateName",
"title": "Template Title",
"body": "Message body with {variables}",
"note": "Template description (optional)",
"section": "Section name (optional)"
}
]
}
}
Поля email шаблона:
- name (обязательно): Системное имя шаблона (будет префиксовано кодом модуля)
- title: Отображаемое название шаблона
- subject (обязательно): Тема письма с переменными в формате
{variable} - body (обязательно): Тело письма с переменными
- style: CSS стили для email (опционально)
- note: Описание шаблона (опционально)
- section: Раздел для группировки шаблонов (опционально)
Поля messenger шаблона:
- name (обязательно): Системное имя шаблона (будет префиксовано кодом модуля)
- title: Отображаемое название шаблона
- body (обязательно): Тело сообщения с переменными в формате
{variable} - note: Описание шаблона (опционально)
- section: Раздел для группировки шаблонов (опционально)
Использование шаблонов:
- Имя шаблона в коде:
{module_code}_{template_name} - Например, для модуля
example_moduleи шаблонаExampleNotificationполное имя будет:example_module_ExampleNotification - Используйте полное имя при вызове
send_notify():
python
from notifications.services import send_notify
send_notify(obj, recipients, template_name='example_module_ExampleNotification')
Переменные в шаблонах:
- Используйте переменные в формате
{variable_name} - Доступны все поля объекта, переданного в
send_notify() - Для связанных объектов используйте префикс:
{related_field_name}_field_name - Примеры:
{title},{user_name},{created_at},{author_display_name}