django-cfg 1.4.13__py3-none-any.whl → 1.4.14__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- django_cfg/apps/urls.py +120 -108
- django_cfg/core/integration/url_integration.py +5 -10
- django_cfg/models/django/openapi.py +11 -48
- django_cfg/modules/django_client/core/generator/typescript/fetchers_generator.py +10 -10
- django_cfg/modules/django_client/core/generator/typescript/hooks_generator.py +23 -20
- django_cfg/modules/django_unfold/dashboard.py +6 -6
- django_cfg/pyproject.toml +1 -1
- {django_cfg-1.4.13.dist-info → django_cfg-1.4.14.dist-info}/METADATA +1 -1
- {django_cfg-1.4.13.dist-info → django_cfg-1.4.14.dist-info}/RECORD +12 -19
- django_cfg/modules/django_dashboard/DEBUG_README.md +0 -105
- django_cfg/modules/django_dashboard/REFACTORING_SUMMARY.md +0 -237
- django_cfg/modules/django_drf_theme/CHANGELOG.md +0 -210
- django_cfg/modules/django_drf_theme/EXAMPLE.md +0 -465
- django_cfg/modules/django_drf_theme/IMPLEMENTATION.md +0 -232
- django_cfg/modules/django_drf_theme/README.md +0 -207
- django_cfg/modules/django_drf_theme/TAILWIND_CDN_GUIDE.md +0 -274
- {django_cfg-1.4.13.dist-info → django_cfg-1.4.14.dist-info}/WHEEL +0 -0
- {django_cfg-1.4.13.dist-info → django_cfg-1.4.14.dist-info}/entry_points.txt +0 -0
- {django_cfg-1.4.13.dist-info → django_cfg-1.4.14.dist-info}/licenses/LICENSE +0 -0
@@ -1,105 +0,0 @@
|
|
1
|
-
# Dashboard Debug Tool
|
2
|
-
|
3
|
-
Инструмент для отладки рендеринга dashboard секций.
|
4
|
-
|
5
|
-
## Использование
|
6
|
-
|
7
|
-
### 1. Management Command
|
8
|
-
|
9
|
-
Запустить из командной строки для тестирования рендера:
|
10
|
-
|
11
|
-
```bash
|
12
|
-
# Рендер всех секций
|
13
|
-
python manage.py debug_dashboard
|
14
|
-
|
15
|
-
# Рендер конкретной секции
|
16
|
-
python manage.py debug_dashboard --section overview
|
17
|
-
python manage.py debug_dashboard --section stats
|
18
|
-
|
19
|
-
# Указать пользователя
|
20
|
-
python manage.py debug_dashboard --user admin
|
21
|
-
```
|
22
|
-
|
23
|
-
### 2. Автоматическое сохранение
|
24
|
-
|
25
|
-
При каждом рендере dashboard секции автоматически сохраняются в:
|
26
|
-
```
|
27
|
-
libs/django_cfg/src/django_cfg/debug/dashboard/
|
28
|
-
```
|
29
|
-
|
30
|
-
Файлы:
|
31
|
-
- `section_overview_YYYYMMDD_HHMMSS.html` - отрендеренный HTML
|
32
|
-
- `section_overview_YYYYMMDD_HHMMSS_context.json` - контекст шаблона
|
33
|
-
- `section_overview_YYYYMMDD_HHMMSS_meta.json` - метаданные
|
34
|
-
|
35
|
-
**Важно**: Директория `debug/` добавлена в `.gitignore` и не попадает в git.
|
36
|
-
|
37
|
-
### 3. Программное использование
|
38
|
-
|
39
|
-
```python
|
40
|
-
from django_cfg.modules.django_dashboard.debug import save_section_render
|
41
|
-
|
42
|
-
# В коде секции
|
43
|
-
html = section.render()
|
44
|
-
save_section_render('my_section', html, section_data={'key': 'value'})
|
45
|
-
```
|
46
|
-
|
47
|
-
## Структура
|
48
|
-
|
49
|
-
```
|
50
|
-
dashboard/
|
51
|
-
├── debug.py # DashboardDebugger класс
|
52
|
-
├── sections/ # Секции dashboard
|
53
|
-
│ ├── overview.py # Overview секция
|
54
|
-
│ ├── stats.py # Stats секция
|
55
|
-
│ ├── system.py # System секция
|
56
|
-
│ └── commands.py # Commands секция
|
57
|
-
└── management/
|
58
|
-
└── commands/
|
59
|
-
└── debug_dashboard.py # Management command
|
60
|
-
```
|
61
|
-
|
62
|
-
## Сравнение с архивом
|
63
|
-
|
64
|
-
```python
|
65
|
-
from django_cfg.modules.django_dashboard.debug import get_debugger
|
66
|
-
from pathlib import Path
|
67
|
-
|
68
|
-
debugger = get_debugger()
|
69
|
-
archive = Path('@archieves/now/dashboard.html')
|
70
|
-
|
71
|
-
comparison = debugger.compare_with_archive(current_html, archive)
|
72
|
-
print(comparison)
|
73
|
-
```
|
74
|
-
|
75
|
-
## Debugging workflow
|
76
|
-
|
77
|
-
1. Запустить `python manage.py debug_dashboard`
|
78
|
-
2. Проверить `@archieves/debug/renders/`
|
79
|
-
3. Сравнить с `@archieves/now/dashboard.html`
|
80
|
-
4. Проверить context.json для диагностики данных
|
81
|
-
5. Исправить проблемы в секциях/шаблонах
|
82
|
-
6. Повторить
|
83
|
-
|
84
|
-
## Примеры проблем
|
85
|
-
|
86
|
-
### Пустой вывод данных
|
87
|
-
Проверить в `_context.json`:
|
88
|
-
- Наличие ключа `data`
|
89
|
-
- Структуру данных (`data.stats`, `data.system_health`)
|
90
|
-
- Значения (не None, не пустые)
|
91
|
-
|
92
|
-
### Template не найден
|
93
|
-
```
|
94
|
-
TemplateDoesNotExist: admin/sections/overview_section.html
|
95
|
-
```
|
96
|
-
Проверить:
|
97
|
-
- Путь к шаблону в `section.template_name`
|
98
|
-
- Наличие файла в `templates/admin/sections/`
|
99
|
-
- Правильность extends/include
|
100
|
-
|
101
|
-
### Ошибки импорта
|
102
|
-
Проверить:
|
103
|
-
- Наличие всех зависимостей
|
104
|
-
- Правильность импортов в секциях
|
105
|
-
- Доступность моделей/конфигов
|
@@ -1,237 +0,0 @@
|
|
1
|
-
# Dashboard Refactoring Summary
|
2
|
-
|
3
|
-
## Проблема
|
4
|
-
|
5
|
-
После рефакторинга dashboard секции данные отображаются не полностью:
|
6
|
-
- Отсутствуют Quick Actions
|
7
|
-
- Отсутствует Charts Section
|
8
|
-
- Отсутствуют System Metrics
|
9
|
-
- Отсутствует Activity Tracker
|
10
|
-
- По умолчанию открывается таб "API Zones" вместо "Overview"
|
11
|
-
|
12
|
-
## Анализ
|
13
|
-
|
14
|
-
### Старая структура (`@archieves/django_cfg/templates`)
|
15
|
-
```
|
16
|
-
admin/
|
17
|
-
├── layouts/
|
18
|
-
│ └── dashboard_with_tabs.html # Layout с табами и JavaScript
|
19
|
-
└── snippets/
|
20
|
-
├── tabs/
|
21
|
-
│ └── overview_tab.html # Полный overview с includes
|
22
|
-
└── components/
|
23
|
-
├── stats_cards.html
|
24
|
-
├── quick_actions.html
|
25
|
-
├── charts_section.html
|
26
|
-
├── recent_activity.html
|
27
|
-
├── system_health.html
|
28
|
-
├── system_metrics.html
|
29
|
-
└── activity_tracker.html
|
30
|
-
```
|
31
|
-
|
32
|
-
### Новая структура (после рефакторинга)
|
33
|
-
```
|
34
|
-
django_cfg/
|
35
|
-
├── dashboard/
|
36
|
-
│ ├── sections/
|
37
|
-
│ │ ├── base.py # Базовые классы секций
|
38
|
-
│ │ ├── overview.py # Overview секция (УПРОЩЕННАЯ!)
|
39
|
-
│ │ ├── stats.py
|
40
|
-
│ │ ├── system.py
|
41
|
-
│ │ └── commands.py
|
42
|
-
│ ├── debug.py # Инструмент отладки
|
43
|
-
│ └── management/commands/
|
44
|
-
│ └── debug_dashboard.py # Management command
|
45
|
-
└── templates/admin/
|
46
|
-
├── index.html # Использует новые секции
|
47
|
-
└── sections/
|
48
|
-
├── overview_section.html # Шаблон overview (УПРОЩЕННЫЙ!)
|
49
|
-
└── ...
|
50
|
-
```
|
51
|
-
|
52
|
-
## Решение
|
53
|
-
|
54
|
-
### 1. Debug инструмент ✅
|
55
|
-
Создан инструмент для отладки рендеринга:
|
56
|
-
```bash
|
57
|
-
python manage.py debug_dashboard
|
58
|
-
```
|
59
|
-
|
60
|
-
Сохраняет рендеры в `@archieves/debug/renders/`:
|
61
|
-
- `section_overview_YYYYMMDD_HHMMSS.html`
|
62
|
-
- `section_overview_YYYYMMDD_HHMMSS_context.json`
|
63
|
-
- `section_overview_YYYYMMDD_HHMMSS_meta.json`
|
64
|
-
|
65
|
-
### 2. Автоматическое сохранение рендеров ✅
|
66
|
-
При каждом рендере секции автоматически сохраняются через:
|
67
|
-
```python
|
68
|
-
from django_cfg.modules.django_dashboard.debug import save_section_render
|
69
|
-
|
70
|
-
save_section_render('overview', html)
|
71
|
-
```
|
72
|
-
|
73
|
-
### 3. Восстановление недостающих компонентов ✅
|
74
|
-
Обновлен `overview_section.html` чтобы включать:
|
75
|
-
- ✅ Quick Actions (через include)
|
76
|
-
- ✅ Charts Section (через include)
|
77
|
-
- ✅ Recent Activity (через include)
|
78
|
-
- ✅ System Metrics (через include)
|
79
|
-
- ✅ Activity Tracker (через include)
|
80
|
-
|
81
|
-
### 4. Исправление активного таба
|
82
|
-
**Проблема**: По умолчанию активен таб "API Zones" (data-tab="1")
|
83
|
-
**Причина**: JavaScript использует URL hash или сохраненное состояние
|
84
|
-
|
85
|
-
**Решение**:
|
86
|
-
- JavaScript корректно активирует первый таб при загрузке
|
87
|
-
- Проблема возникает только если сохранить страницу с активным другим табом
|
88
|
-
|
89
|
-
## Архитектура
|
90
|
-
|
91
|
-
### Старый подход
|
92
|
-
```django
|
93
|
-
{% extends 'admin/layouts/dashboard_with_tabs.html' %}
|
94
|
-
|
95
|
-
{% block overview_tab %}
|
96
|
-
{% include 'admin/snippets/tabs/overview_tab.html' %}
|
97
|
-
{% endblock %}
|
98
|
-
```
|
99
|
-
|
100
|
-
**Плюсы:**
|
101
|
-
- Простая структура
|
102
|
-
- Все компоненты в templates
|
103
|
-
|
104
|
-
**Минусы:**
|
105
|
-
- Нет разделения логики и представления
|
106
|
-
- Нет типизации данных
|
107
|
-
- Сложно тестировать
|
108
|
-
|
109
|
-
### Новый подход
|
110
|
-
```python
|
111
|
-
class OverviewSection(DataSection):
|
112
|
-
template_name = "admin/sections/overview_section.html"
|
113
|
-
|
114
|
-
def get_data(self):
|
115
|
-
return {
|
116
|
-
'stats': self.get_key_stats(),
|
117
|
-
'system_health': self.get_system_health(),
|
118
|
-
}
|
119
|
-
```
|
120
|
-
|
121
|
-
**Плюсы:**
|
122
|
-
- Разделение логики и представления
|
123
|
-
- Типизация данных
|
124
|
-
- Легко тестировать
|
125
|
-
- Переиспользуемые компоненты
|
126
|
-
|
127
|
-
**Минусы:**
|
128
|
-
- Более сложная структура
|
129
|
-
- Нужно поддерживать совместимость со старыми компонентами
|
130
|
-
|
131
|
-
## Рекомендации
|
132
|
-
|
133
|
-
### Краткосрочные
|
134
|
-
1. ✅ Восстановить все компоненты в overview секции
|
135
|
-
2. ⏳ Проверить остальные секции (stats, system, commands)
|
136
|
-
3. ⏳ Добавить тесты для секций
|
137
|
-
|
138
|
-
### Долгосрочные
|
139
|
-
1. Создать templatetags для упрощения:
|
140
|
-
```django
|
141
|
-
{% render_section 'overview' %}
|
142
|
-
{% render_card stats %}
|
143
|
-
```
|
144
|
-
|
145
|
-
2. Унифицировать компоненты:
|
146
|
-
- Переписать старые snippets как Python классы
|
147
|
-
- Единый стиль для всех секций
|
148
|
-
|
149
|
-
3. Добавить конфигурацию:
|
150
|
-
```python
|
151
|
-
DJANGO_CFG_DASHBOARD = {
|
152
|
-
'sections': ['overview', 'stats', 'system'],
|
153
|
-
'default_tab': 0,
|
154
|
-
}
|
155
|
-
```
|
156
|
-
|
157
|
-
## Миграция со старой версии
|
158
|
-
|
159
|
-
### Вариант 1: Использовать новые секции (текущий)
|
160
|
-
```django
|
161
|
-
{% extends 'admin/layouts/dashboard_with_tabs.html' %}
|
162
|
-
|
163
|
-
{% block overview_tab %}
|
164
|
-
{% if overview_section %}
|
165
|
-
{{ overview_section|safe }}
|
166
|
-
{% else %}
|
167
|
-
{% include 'admin/snippets/tabs/overview_tab.html' %}
|
168
|
-
{% endif %}
|
169
|
-
{% endblock %}
|
170
|
-
```
|
171
|
-
|
172
|
-
### Вариант 2: Вернуться к старым includes
|
173
|
-
```django
|
174
|
-
{% extends 'admin/layouts/dashboard_with_tabs.html' %}
|
175
|
-
|
176
|
-
{% block overview_tab %}
|
177
|
-
{% include 'admin/snippets/tabs/overview_tab.html' %}
|
178
|
-
{% endblock %}
|
179
|
-
```
|
180
|
-
|
181
|
-
### Вариант 3: Гибридный подход (рекомендуется)
|
182
|
-
```django
|
183
|
-
{% block overview_tab %}
|
184
|
-
{% if use_new_sections %}
|
185
|
-
{{ overview_section|safe }}
|
186
|
-
{% else %}
|
187
|
-
{% include 'admin/snippets/tabs/overview_tab.html' %}
|
188
|
-
{% endif %}
|
189
|
-
{% endblock %}
|
190
|
-
```
|
191
|
-
|
192
|
-
## Файлы
|
193
|
-
|
194
|
-
### Изменены
|
195
|
-
- `modules/django_unfold/callbacks/main.py` - добавлен рендер секций с debug
|
196
|
-
- `templates/admin/index.html` - использует новые секции
|
197
|
-
- `templates/admin/sections/overview_section.html` - восстановлены компоненты
|
198
|
-
|
199
|
-
### Добавлены
|
200
|
-
- `dashboard/` - новая директория с секциями
|
201
|
-
- `sections/` - классы секций
|
202
|
-
- `debug.py` - отладочный инструмент
|
203
|
-
- `management/commands/debug_dashboard.py` - management command
|
204
|
-
- `DEBUG_README.md` - документация
|
205
|
-
- `REFACTORING_SUMMARY.md` - этот файл
|
206
|
-
|
207
|
-
### Архив
|
208
|
-
- `@archieves/django_cfg/templates/` - старые шаблоны
|
209
|
-
- `@archieves/now/dashboard.html` - последний рендер до исправлений
|
210
|
-
- `@archieves/debug/renders/` - сохраненные рендеры для отладки
|
211
|
-
|
212
|
-
## Команды
|
213
|
-
|
214
|
-
### Отладка
|
215
|
-
```bash
|
216
|
-
# Рендер всех секций
|
217
|
-
python manage.py debug_dashboard
|
218
|
-
|
219
|
-
# Рендер конкретной секции
|
220
|
-
python manage.py debug_dashboard --section overview
|
221
|
-
|
222
|
-
# Сравнение с архивом
|
223
|
-
diff @archieves/now/dashboard.html @archieves/debug/renders/section_overview_*.html
|
224
|
-
```
|
225
|
-
|
226
|
-
### Git
|
227
|
-
```bash
|
228
|
-
# Статус изменений
|
229
|
-
git status libs/django_cfg/src/django_cfg
|
230
|
-
|
231
|
-
# Diff изменений
|
232
|
-
git diff libs/django_cfg/src/django_cfg
|
233
|
-
|
234
|
-
# Добавить новые файлы
|
235
|
-
git add libs/django_cfg/src/django_cfg/dashboard/
|
236
|
-
git add libs/django_cfg/src/django_cfg/templates/admin/sections/
|
237
|
-
```
|
@@ -1,210 +0,0 @@
|
|
1
|
-
# Changelog
|
2
|
-
|
3
|
-
All notable changes to the Django DRF Tailwind Theme module will be documented in this file.
|
4
|
-
|
5
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
6
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
7
|
-
|
8
|
-
## [1.0.0] - 2025-01-XX
|
9
|
-
|
10
|
-
### 🎉 Initial Release
|
11
|
-
|
12
|
-
First production-ready release of the modern Tailwind CSS theme for Django REST Framework Browsable API.
|
13
|
-
|
14
|
-
### ✨ Added
|
15
|
-
|
16
|
-
#### Design & UI
|
17
|
-
- Glass morphism design with backdrop-blur effects
|
18
|
-
- Responsive mobile-first layout
|
19
|
-
- Custom styled scrollbars
|
20
|
-
- Smooth CSS transitions (200ms cubic-bezier)
|
21
|
-
- Gradient color schemes (blue → purple)
|
22
|
-
- HTTP method badges with color coding
|
23
|
-
- Status code badges (success/error/warning)
|
24
|
-
|
25
|
-
#### Theme System
|
26
|
-
- Three-mode theme system (Light/Dark/Auto)
|
27
|
-
- System preference detection and auto-switching
|
28
|
-
- Cookie-based theme persistence
|
29
|
-
- Smooth theme transitions
|
30
|
-
- Theme dropdown in navbar
|
31
|
-
|
32
|
-
#### Power User Features
|
33
|
-
- **Command Palette** (⌘K) with quick actions:
|
34
|
-
- Copy current URL
|
35
|
-
- Toggle theme
|
36
|
-
- Show keyboard shortcuts
|
37
|
-
- **Keyboard Shortcuts**:
|
38
|
-
- `⌘K` / `Ctrl+K` - Open command palette
|
39
|
-
- `⌘D` / `Ctrl+D` - Toggle theme
|
40
|
-
- `⌘C` / `Ctrl+C` - Copy URL
|
41
|
-
- `?` - Show shortcuts help
|
42
|
-
- `Esc` - Close dialogs
|
43
|
-
- Toast notification system with auto-dismiss
|
44
|
-
- One-click copy for JSON and URLs
|
45
|
-
|
46
|
-
#### Response Viewer
|
47
|
-
- Tabbed interface (Pretty/Raw/Headers)
|
48
|
-
- Syntax highlighting with Prism.js
|
49
|
-
- Copy button for JSON content
|
50
|
-
- Collapsible JSON tree view
|
51
|
-
- Character count for responses
|
52
|
-
- Empty state placeholder
|
53
|
-
|
54
|
-
#### Request Forms
|
55
|
-
- Content type selector (JSON/Form Data/Multipart/Text)
|
56
|
-
- JSON formatting and validation
|
57
|
-
- Character counter for request body
|
58
|
-
- Quick templates (empty object/array)
|
59
|
-
- Additional headers support
|
60
|
-
- Method selector (GET/POST/PUT/PATCH/DELETE)
|
61
|
-
- Delete confirmation dialog
|
62
|
-
|
63
|
-
#### Filters & Search
|
64
|
-
- Smart field type detection
|
65
|
-
- Active filters summary
|
66
|
-
- One-click clear buttons
|
67
|
-
- Help text tooltips
|
68
|
-
- Filter persistence in URL
|
69
|
-
|
70
|
-
#### Pagination
|
71
|
-
- Clean pagination controls
|
72
|
-
- Result count display
|
73
|
-
- Previous/Next navigation
|
74
|
-
|
75
|
-
#### Technical
|
76
|
-
- Alpine.js v3 for reactivity (replaces jQuery)
|
77
|
-
- Prism.js v1.29 for syntax highlighting
|
78
|
-
- Tailwind CSS v4 integration
|
79
|
-
- Template fallback mechanism
|
80
|
-
- Full DRF compatibility
|
81
|
-
- Extends `BrowsableAPIRenderer`
|
82
|
-
|
83
|
-
### 🔧 Configuration
|
84
|
-
|
85
|
-
- Added `enable_drf_tailwind` field to `DjangoConfig` (default: `True`)
|
86
|
-
- Added `renderer_classes` field to `DRFConfig`
|
87
|
-
- Auto-registration in `INSTALLED_APPS` via `InstalledAppsBuilder`
|
88
|
-
- Zero-configuration setup (works out of the box)
|
89
|
-
|
90
|
-
### 📊 Performance
|
91
|
-
|
92
|
-
- **88% bundle size reduction** (278 KB → 33 KB)
|
93
|
-
- CSS: 139 KB → 15 KB (89% reduction)
|
94
|
-
- JS: 139 KB → 18 KB (87% reduction)
|
95
|
-
- **+23 Lighthouse score improvement** (72 → 95)
|
96
|
-
- **66% faster First Contentful Paint** (3.2s → 1.1s)
|
97
|
-
|
98
|
-
### 📚 Documentation
|
99
|
-
|
100
|
-
- Complete README.md with features and usage
|
101
|
-
- EXAMPLE.md with code examples
|
102
|
-
- IMPLEMENTATION.md with technical details
|
103
|
-
- Inline code documentation
|
104
|
-
- Keyboard shortcuts help
|
105
|
-
|
106
|
-
### 🎯 Browser Support
|
107
|
-
|
108
|
-
- Chrome/Edge 90+
|
109
|
-
- Firefox 88+
|
110
|
-
- Safari 14+
|
111
|
-
- iOS Safari 14+
|
112
|
-
- Chrome Mobile 90+
|
113
|
-
|
114
|
-
### 🔒 Security
|
115
|
-
|
116
|
-
- No external JavaScript dependencies (CDN only for Alpine.js and Prism.js)
|
117
|
-
- CSRF token handling
|
118
|
-
- XSS protection via Django templating
|
119
|
-
- Secure cookie handling for theme preference
|
120
|
-
|
121
|
-
---
|
122
|
-
|
123
|
-
## [Unreleased]
|
124
|
-
|
125
|
-
### 🚀 Planned Features
|
126
|
-
|
127
|
-
#### Priority 2 (Next Release)
|
128
|
-
- [ ] Pagination template (`pagination/numbers.html`)
|
129
|
-
- [ ] Standalone JSON viewer component
|
130
|
-
- [ ] Search functionality in command palette
|
131
|
-
- [ ] LocalStorage theme persistence (in addition to cookies)
|
132
|
-
- [ ] Export/download JSON functionality
|
133
|
-
- [ ] Response time display
|
134
|
-
- [ ] Request history
|
135
|
-
|
136
|
-
#### Priority 3 (Future)
|
137
|
-
- [ ] Unit tests with pytest
|
138
|
-
- [ ] Integration tests
|
139
|
-
- [ ] Visual regression tests (Playwright)
|
140
|
-
- [ ] Accessibility audit (WCAG 2.1 AA compliance)
|
141
|
-
- [ ] I18n support (multiple languages)
|
142
|
-
- [ ] Custom color scheme configurator
|
143
|
-
- [ ] Printable response view
|
144
|
-
- [ ] API request bookmarks
|
145
|
-
|
146
|
-
### 🐛 Known Issues
|
147
|
-
|
148
|
-
None currently. Please report issues at [GitHub Issues](https://github.com/your-org/django-cfg/issues).
|
149
|
-
|
150
|
-
---
|
151
|
-
|
152
|
-
## Version History
|
153
|
-
|
154
|
-
### [1.0.0] - 2025-01-XX
|
155
|
-
- Initial production release
|
156
|
-
|
157
|
-
---
|
158
|
-
|
159
|
-
## Migration Guide
|
160
|
-
|
161
|
-
### From Bootstrap 3 (Standard DRF)
|
162
|
-
|
163
|
-
No migration needed! The Tailwind theme is enabled by default and fully backward compatible.
|
164
|
-
|
165
|
-
**To keep Bootstrap theme:**
|
166
|
-
```python
|
167
|
-
class MyConfig(DjangoConfig):
|
168
|
-
enable_drf_tailwind: bool = False
|
169
|
-
```
|
170
|
-
|
171
|
-
**To use both:**
|
172
|
-
```python
|
173
|
-
drf: DRFConfig = DRFConfig(
|
174
|
-
renderer_classes=[
|
175
|
-
'rest_framework.renderers.JSONRenderer',
|
176
|
-
'django_cfg.modules.django_drf_theme.renderers.TailwindBrowsableAPIRenderer',
|
177
|
-
'rest_framework.renderers.BrowsableAPIRenderer', # Bootstrap fallback
|
178
|
-
]
|
179
|
-
)
|
180
|
-
```
|
181
|
-
|
182
|
-
### Template Customization
|
183
|
-
|
184
|
-
If you had custom DRF templates:
|
185
|
-
|
186
|
-
**Old location:**
|
187
|
-
```
|
188
|
-
your_app/templates/rest_framework/api.html
|
189
|
-
```
|
190
|
-
|
191
|
-
**New location for Tailwind:**
|
192
|
-
```
|
193
|
-
your_app/templates/rest_framework/tailwind/api.html
|
194
|
-
```
|
195
|
-
|
196
|
-
Templates automatically fall back to standard DRF templates if not found.
|
197
|
-
|
198
|
-
---
|
199
|
-
|
200
|
-
## Credits
|
201
|
-
|
202
|
-
- **Design Inspiration**: VS Code, Raycast, Linear, Vercel
|
203
|
-
- **Technologies**: Django REST Framework, Tailwind CSS, Alpine.js, Prism.js
|
204
|
-
- **Built for**: django-cfg package
|
205
|
-
|
206
|
-
---
|
207
|
-
|
208
|
-
## License
|
209
|
-
|
210
|
-
Part of django-cfg. See main LICENSE file.
|