🚀 MEGA UPDATE: Объединение всех изменений для продакшена
Some checks failed
continuous-integration/drone/push Build is failing

 НОВЫЕ ФУНКЦИИ:
- 🎬 Поддержка видео в Hero баннерах и услугах
- 💊 Водная анимация пилюль маркеров банеров
- 📱 Полная главная страница с портфолио, блогом, новостями
- 🎯 HeroBanner модель с видео/изображениями
- 🎨 Современные hover-эффекты и анимации

📊 УЛУЧШЕНИЯ СТРУКТУРЫ:
- Расширенная home_modern.html с полным контентом
- Новые URL маршруты для всех секций
- Обновленные views с передачей всех данных
- CSS стили для всех новых секций
- Миграции для видео полей

🎪 HERO БАНЕР СИСТЕМА:
- Динамические банеры с видео/фото фонами
- Пилюли маркеры с водной анимацией
- Растягивание маркеров от центра
- Адаптивный дизайн для мобильных
- Glassmorphism эффекты

🎨 СОВРЕМЕННЫЙ ДИЗАЙН:
- Hover анимации для карточек
- Плавные переходы везде
- Современная типографика
- Градиенты и тени
- Отзывчивая сетка

Готов к продакшену! 🚀
This commit is contained in:
2025-11-25 11:24:19 +09:00
parent 6a576136af
commit 6f43fa4c3b
14 changed files with 1832 additions and 94 deletions

View File

@@ -1,5 +1,5 @@
from django.shortcuts import render, get_object_or_404, redirect
from .models import Service, Project, Client, BlogPost, Review, Order, ServiceRequest
from .models import Service, Project, Client, BlogPost, Review, Order, ServiceRequest, HeroBanner
from django.db.models import Avg
from comunication.models import TelegramSettings
import qrcode
@@ -34,7 +34,20 @@ except Exception as e:
def home(request):
services = Service.objects.all()[:6] # Показываем только первые 6 услуг на главной
return render(request, 'web/home_modern.html', {'services': services})
hero_banners = HeroBanner.objects.filter(is_active=True).order_by('order', '-created_at')[:3] # Получаем активные баннеры
# Добавляем данные для полной главной страницы
latest_projects = Project.objects.all()[:3] # Последние проекты для портфолио
latest_blog_posts = BlogPost.objects.all()[:2] # Последние статьи блога
reviews = Review.objects.all()[:3] # Отзывы клиентов
return render(request, 'web/home_modern.html', {
'services': services,
'hero_banners': hero_banners,
'latest_projects': latest_projects,
'latest_blog_posts': latest_blog_posts,
'reviews': reviews,
})
def service_detail(request, pk):
service = get_object_or_404(Service, pk=pk)
@@ -69,6 +82,21 @@ def services_view(request):
def about_view(request):
return render(request, 'web/about_modern.html')
def portfolio_view(request):
projects = Project.objects.all()
return render(request, 'web/portfolio.html', {'projects': projects})
def blog_view(request):
blog_posts = BlogPost.objects.all().order_by('-created_at')
return render(request, 'web/blog.html', {'blog_posts': blog_posts})
def news_view(request):
# Можно создать модель News или использовать BlogPost с категорией
return render(request, 'web/news.html')
def career_view(request):
return render(request, 'web/career.html')
def create_service_request(request, service_id):
if request.method == 'POST':
try: