Django‑приложение для управления пользовательскими профилями, учётом навыков, персональными галереями изображений и сбором обратной связи. Платформа позволяет пользователям показывать свои компетенции, вести портфолио и взаимодействовать с сообществом.
- Кастомная модель пользователя (аутентификация по email)
- Автоматическое создание профиля (био + навыки)
- Безопасный вход / выход, валидация пароля
- Предопределённые категории
- 4 уровня владения: Новичок / Средний / Продвинутый / Хочу изучить
- Привязка нескольких навыков к одному профилю
- Персональная галерея для каждого пользователя
- Загрузка изображений с альтернативным текстом
- Массовое удаление или очистка целой галереи
- Видимость только собственных файлов
- Форма отправки (имя, email, сообщение)
- Автоматическая временная метка
- Привязка к аутентифицированному пользователю
- CRUD для изображений галереи (Django REST Framework)
- Маршрутизация через DefaultRouter
- Отдельная панель управления
- Доступ только для персонала (staff)
- Django 5.1.6
- Django REST Framework 3.15.2
- SQLite3 (разработка)
- ASGI: asgiref 3.8.1
- Python 3.x
- Установлен Python 3.x
- pip
- (рекомендуется) виртуальное окружение
- Клонировать репозиторий:
git clone https://github.com/Nerdlin/Project-for-Boundary-control.git cd Project-for-Boundary-control - Создать окружение:
python -m venv venv
- Активировать:
- Windows:
venv\Scripts\activate
- macOS / Linux:
source venv/bin/activate
- Windows:
- Установить зависимости:
pip install -r requirements.txt
- Применить миграции:
python manage.py migrate
- (Опционально) Создать суперпользователя:
python manage.py createsuperuser
- Запустить сервер:
python manage.py runserver
- Открыть в браузере: http://127.0.0.1:8000/
Основные параметры в core/settings.py:
- SECRET_KEY – заменить в продакшене
- DEBUG = False для продакшена
- ALLOWED_HOSTS – добавить домены
- LANGUAGE_CODE = 'ru-ru'
- TIME_ZONE = 'UTC'
В разработке используется консольный backend. Для SMTP:
- Раскомментировать настройки SMTP
- Указать HOST_USER / HOST_PASSWORD
- Настроить параметры провайдера
- MEDIA_URL: /media/
- MEDIA_ROOT: BASE_DIR / 'media' Изображения: media/gallery/
- STATIC_URL: /static/
- STATICFILES_DIRS: BASE_DIR / 'static'
Project-for-Boundary-control/
├── api_app/ # REST API для галереи
├── auth_app/ # Аутентификация и профили
├── core/ # Настройки и корневые URL
├── custom_admin/ # Кастомная админ-панель
├── feedback_app/ # Сбор обратной связи
├── pages_app/ # Основные страницы и представления галереи
├── skills/ # Управление навыками
├── static/ # Статические файлы
├── templates/ # HTML шаблоны
├── media/ # Загруженный контент
├── manage.py
└── requirements.txt
Тесты:
python manage.py testМиграции после изменения моделей:
python manage.py makemigrations
python manage.py migrateСбор статики (продакшен):
python manage.py collectstatic- Регистрация / вход
- Настройка профиля и биографии
- Загрузка и управление изображениями
- Добавление навыков с уровнями
- Отправка обратной связи
- Django Admin: /admin/
- Кастомная панель: /admin-panel/ (только staff)
- Управление пользователями, навыками и контентом
Endpoint: /api/gallery/
- GET – список
- POST – создание
- PUT/PATCH – обновление
- DELETE – удаление
- Поменять SECRET_KEY
- DEBUG = False
- Заполнить ALLOWED_HOSTS
- Использовать переменные окружения для секретов
- Настроить продакшн БД (PostgreSQL / MySQL)
- SMTP для реальных писем
- Включить HTTPS (SSL)
- Рассмотреть настройку CSRF / Security Middleware
Проект предназначен для учебного / личного использования. Уточните условия у автора репозитория.
- Fork репозитория
- Ветка: git checkout -b feature/Название
- Коммит: git commit -m "Добавлено: ..."
- Push: git push origin feature/Название
- Pull Request
Задавайте вопросы и создавайте issues в репозитории.
⚠ Это версия для разработки. Перед деплоем проверьте настройки, секреты и безопасность.