# Структура шаблонов EUSRR ## 📁 Организация проекта ``` templates/ ├── base.html # Базовый layout ├── admin/ # Административные шаблоны ├── auth/ # Авторизация, регистрация ├── communications/ # Чаты, сообщения ├── documents/ # Документы ├── emails/ # Email-шаблоны ├── employees/ # Сотрудники, отделы │ └── components/ # Переиспользуемые компоненты ├── feed/ # Лента новостей │ └── includes/ # Компоненты ленты ├── includes/ # Общие компоненты │ ├── navbar.html │ ├── sidebar.html │ └── calendar/ # Компоненты календаря ├── requests_app/ # Заявления сотрудников │ └── components/ # Компоненты заявлений └── search/ # Поиск REFACTORING_PLAN.md # План рефакторинга ``` ## 🎨 Архитектура ### Базовый шаблон (base.html) Все страницы наследуются от `base.html`: ```django {% extends "base.html" %} {% load static %} {% block title %}Название страницы{% endblock %} {% block extra_css %} {% endblock %} {% block content %} {% endblock %} {% block extra_js %} {% endblock %} ``` ### Структура блоков в base.html - `{% block title %}` - Заголовок страницы - `{% block extra_css %}` - Дополнительные CSS файлы - `{% block content %}` - Основное содержимое - `{% block extra_js %}` - Дополнительные JavaScript файлы ## 🔧 Компоненты ### Общие компоненты (includes/) #### navbar.html Навигационная панель приложения: - Логотип - Поиск - Меню пользователя - Уведомления ```django {% include "includes/navbar.html" %} ``` #### sidebar.html Боковая панель навигации: - Меню разделов - Профиль пользователя - Быстрые ссылки ```django {% include "includes/sidebar.html" %} ``` #### calendar/calendar_styles.html Стили календаря (подключает CSS): ```django {% include "includes/calendar/calendar_styles.html" %} ``` ### Компоненты сотрудников (employees/components/) #### department_styles.html Стили для колеса команды: ```django {% include "employees/components/department_styles.html" %} ``` ### Компоненты ленты (feed/includes/) #### _post_card.html Карточка поста в ленте: ```django {% include "feed/includes/_post_card.html" with post=post %} ``` ## 📝 Именование файлов ### Соглашения - `{model}_list.html` - Списки (employees_list.html) - `{model}_detail.html` - Детальные страницы (employee_detail.html) - `{model}_form.html` - Формы создания/редактирования (post_form.html) - `{model}_confirm_delete.html` - Подтверждение удаления - `components/{name}.html` - Переиспользуемые компоненты - `_{name}.html` - Партиалы (только в старых файлах, новые без подчёркивания) ## 🎯 Использование CSS ### Подключение стилей Всегда используйте `{% block extra_css %}`: ```django {% block extra_css %} {% endblock %} ``` ### Встроенные стили ❌ **Избегайте:** ```django ``` ✅ **Используйте компоненты:** ```django {% block extra_css %} {% endblock %} ``` ## 🚀 JavaScript ### ES6 модули Используйте ES6 модули для JavaScript: ```django {% block extra_js %} {% endblock %} ``` ### Встроенные скрипты ❌ **Избегайте больших скриптов:** ```django ``` ✅ **Создавайте модули:** ```javascript // static/js/components/myComponent.js export class MyComponent { // ... } ``` ## 📦 Переиспользуемые компоненты ### Передача контекста Компоненты получают данные через `with`: ```django {% include "includes/avatar.html" with user=employee size="lg" %} ``` ### Создание компонента ```django {# includes/components/avatar.html #} {% load static %}
Добро пожаловать, {{ user.get_short_name }}!
{% else %} Войти {% endif %} ``` ### 5. Циклы с empty ```django {% for employee in employees %}Сотрудников не найдено
{% endfor %} ``` ## 🔍 Отладка ### Проверка переменных ```django{{ variable|pprint }}
```
### Debug toolbar
```django
{% if debug %}
{% endif %}
```
## 📊 Статистика рефакторинга
### До рефакторинга
- Файлов: 61
- Строк кода: 11,479
- Встроенных CSS: 1,359 строк
- Встроенных JS: 4,522 строк
- Дублирующих файлов: 3
### После рефакторинга (Фаза 5)
- Файлов: 58
- CSS компонентов: 21
- Встроенных CSS: 0 строк ✅
- Встроенных JS: ~200 строк
- Дублирующих файлов: 0 ✅
### Улучшения
- ✅ Устранено 100% дублирования
- ✅ Извлечено 3,529 строк CSS в компоненты
- ✅ Создана единая архитектура стилей
- ✅ Все шаблоны используют централизованные CSS
## 🚧 Текущие задачи
### Фаза 6 (В процессе)
- ✅ Создать `variables.css` с полным набором переменных
- ✅ Документировать CSS структуру
- ⏳ Документировать JavaScript структуру
- ⏳ Создать финальный отчёт
## 🔗 Связанные документы
- [План рефакторинга](REFACTORING_PLAN.md) - Полный план работ
- [CSS README](../static/css/README.md) - Документация CSS
- [JS README](../static/js/README.md) - Документация JavaScript (TODO)
## 📞 Контакты
**Автор рефакторинга:** GitHub Copilot
**Дата создания:** 28 октября 2025
**Версия:** 1.0
---
## Быстрый старт
### Создание новой страницы
1. Создайте HTML шаблон:
```django
{# myapp/my_page.html #}
{% extends "base.html" %}
{% load static %}
{% block title %}Моя страница{% endblock %}
{% block extra_css %}
{% endblock %}
{% block content %}