Переопределение из каталога шаблонов приложения django python

Переопределение из каталога шаблонов приложения django python
На чтение
27 мин.
Просмотров
8
Дата обновления
09.03.2025
#COURSE#

Для переопределения шаблона в Django, необходимо понимать структуру вашего проекта. Во-первых, найдите шаблон, который вы хотите переопределить, в каталоге вашего приложения. Затем, создайте в том же приложении подкаталог templates (если его нет), и поместите в него новый файл с тем же названием, что и исходный шаблон, но с изменением расширения с .html на .html. Например, из файла base.html в каталоге приложения создайте новый base.html в подкаталоге templates.

Важно: путь к новому шаблону будет относительным. Django ищет шаблоны именно в расположении вашего приложения по аналогии с тем, как искать файл .js или .css в своих директориях.

Обратите внимание на пути: Django автоматически обращается к шаблонам в подкаталоге templates внутри вашего приложения. Убедитесь, что шаблон с вашей заменой находится именно по этому пути и имеет соответствующее название. Поэкспериментируйте с разными названиями шаблонов, если у вас возникли проблемы.

Пример: если ваш шаблон находится в my_app/templates/my_app/base.html, то Django будет искать подходящий шаблон для переопределения именно в подкаталоге my_app/templates/. Изменения валидны только если этот подкаталог создан.

Переопределение шаблонов в Django

Для переопределения шаблонов в Django используйте следующие шаги.

Шаг Описание
1. Создайте файл шаблона Создайте новый файл шаблона в каталоге приложения, который вы хотите переопределить. Например, если нужно переопределить шаблон списка пользователей, создайте файл users/user_list.html в каталоге шаблонов приложения users. Имя файла должно точно соответствовать имени шаблона, который вы хотите переопределить.
2. Укажите путь к шаблону В вашем представлении (view) укажите путь к созданному шаблону. Например, если создали users/user_list.html, в представлении укажите 'users/user_list.html'. Важно учитывать структуру каталога шаблонов вашего приложения.
3. Используйте переопределение В новом шаблоне скопируйте содержание оригинального шаблона. Измените только те части шаблона, которые требуют переопределения, например, добавьте или измените какие-то блоки. Используйте доступные в шаблоне переменные из представления, чтобы отображать необходимую информацию.
4. Запустите сервер После внесения изменений в обновленный шаблон запустите сервер, чтобы проверить изменения. Если в файле шаблона есть ошибки, сервер Django их выведет.

Пример. Предположим, у вас есть шаблон base.html, который используется во всех страницах сайта. Вы хотите переопределить его для страницы «Контакты», создав contact/base.html в каталоге шаблонов приложения contact.

В contact/base.html необходимо изменить лишь те части, которые не подходят для страницы «Контакты». Остальное содержимое можно скопировать (и модифицировать) из базового шаблона.

В представлении для страницы «Контакты» вы укажете путь к созданному шаблону: contact/base.html

Настройка пути к каталогу шаблонов

Установите переменную окружения TEMPLATES_DIRS в файле settings.py. Например:

TEMPLATES_DIRS = [ '/home/user/myproject/templates', # Абсолютный путь 'myproject/templates' #Относительный путь, если папка templates в том же каталоге, что и файл settings.py ]

Альтернатива: используйте директиву STATICFILES_DIRS только для статических файлов, а шаблоны храните в TEMPLATES_DIRS. Это позволит вам избегать конфликтов.

В пределах проекта Django, если каталог шаблонов расположен внутри приложения, указывайте его путь относительно приложения:

{% extends 'myapp/base.html' %}

Важно: Убедитесь, что указанные пути действительны и каталоги существуют.

Проверьте, что в файле settings.py задано правильное значение TEMPLATES, которое указывает на список каталогов шаблонов:

TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': TEMPLATES_DIRS, # Здесь указывается путь к нашим каталогам 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ ... ], }, }, ]

После изменений перезапустите сервер разработки Django, чтобы изменения вступили в силу.

Переопределение отдельных блоков и тегов

Для переопределения отдельных блоков в шаблонах Django используйте наследование.

Например, для блока {% block content %} в базовом шаблоне base.html, создайте новый шаблон, например, mypage.html, наследуя его от base.html:


{% extends "base.html" %}
{% block content %}
Это содержимое, переопределяющее блок content.
{% endblock %}

Аналогично, для переопределения тега, например, </code>, измените соответствующий блок в base.html:</p> <pre> <code> {% block title %} Мой базовый заголовок {% endblock %} </code> </pre> <p>В наследовавшем шаблоне переопределите нужный блок:</p> <pre> <code> {% extends "base.html" %} {% block title %} Мой новый заголовок {% endblock %} </code> </pre> <p>Таким образом, вы можете переопределять конкретный блок или тег, сохраняя базовую структуру приложения.</p> <h2>Переопределение блоков в inheriting-шаблонах</h2> <p>Для переопределения блока в наследуемом шаблоне Django используйте тег <strong>{% block %}</strong> в дочернем шаблоне.</p> <p><strong>Пример:</strong></p> <p>В основном шаблоне (например, <code>base.html</code>):</p> <pre><code>{% block content %}{% endblock %}</code></pre> <p>В наследуемом шаблоне (например, <code>mypage.html</code>):</p> <pre><code>{% extends "base.html" %} {% block content %} <p>Вот мои данные.</p> {% endblock %} </code></pre> <p>Этот код покажет контент, заданный в блоке <code>content</code> в шаблоне <code>mypage.html</code>, а не контент блока <code>content</code> в <code>base.html</code>.</p> <p>Обратите внимание, что вы можете вносить изменения в содержимое блока, а не полностью заменять его.</p> <p><strong>Вложенность блоков:</strong></p> <p>Вы можете определить блоки внутри других блоков. Это дает возможность модульного дизайна шаблонов.</p> <pre><code>{% block myblock %} {{some_var}} {% block inner %} <p>Внутри блока.</p>{% endblock %} {% endblock %} </code></pre> <p>Вложенные блоки работают аналогично обычным блокам.</p> <p><strong>Проверка отсутствия блока:</strong></p> <p>Если дочерний шаблон не переопределяет блок, можно проверить его существование:</p> <pre><code>{% block content %} {% if not block.is_variable %} <p>Не переопределён</p> {% endif %} {% endblock %} </code></pre> <p>Можно использовать переменные из шаблона-родителя, при этом сохраняя гибкость.</p> <h2>Использование контекстных переменных в переопределенных шаблонах</h2> <p>Для доступа к данным, переданным в шаблон приложения Django, используйте контекстные переменные. В переопределенном шаблоне вы можете использовать эти переменные точно так же, как и в обычном.</p> <p>Например, если вы хотите отобразить имя пользователя, передаваемое в контексте:</p> <ul> <li>В представлении (view):</li> <li><code>context = {'username': user.username}</li> <li><code>return render(request, 'your_template.html', context)</li> </ul> <p>В переопределённом шаблоне (например, <code>templates/myapp/my_template_override.html</code>):</p> <pre> <p>Привет, {{ username }}!</p> </pre> <p>Таким образом, имя пользователя будет подставлено в шаблон во время рендеринга.</p> <p>Если нужно использовать переменные из родительского шаблона:</p> <p>В родительском шаблоне (например, <code>templates/base.html</code>):</p> <pre> <p>Главный заголовок: {{ main_title }}</p> </pre> <p>В переопределённом шаблоне (например, <code>templates/myapp/my_template_override.html</code>):</p> <pre> <p>Дополнительный текст: {{ extra_info }}</p> </pre> <p>Будет работать, если данные в переменной <code>main_title</code> были переданы в <code>context</code> для родительского шаблона.</p> <p>Важно: контекст должен содержать необходимые переменные. Избегайте обращения к несуществующим переменным.</p> <p>Примеры использования списков и словарей:</p> <ul> <li>Чтобы вывести список:</li> <pre><ul> <li>{% for item in my_list %} {{ item }} </li> {% endfor %} </ul> </pre> <li>Чтобы вывести элемент словаря:</li> <pre><p>{{ my_dict.key }} </p> </pre> </ul> <h2>Работа с фильтрами и тегами Django в переопределенных шаблонах</h2> <p>Для применения фильтров и тегов в переопределённых шаблонах Django, используйте стандартную синтаксическую конструкцию, как в обычных шаблонах.</p> <p><b>Пример:</b> Предположим, у вас есть переопределённый шаблон <code>myapp/templates/myapp/my_template.html</code>, где вы хотите отобразить имя пользователя с заглавной буквы:</p> <pre><code> {% load django_filters %} <p>Привет, capfirst }!</p> </code></pre> <p>В этом примере используется фильтр <code>capfirst</code> стандартной библиотек Django. Обратите внимание на правильный синтаксис с вертикальной чертой.</p> <pre><code> {% load static %} {% for item in items %} <div> <p>Предмет: {{ item.title }}</p> <p>Дата: { item.date}</p> </div> {% endfor %} </code></pre> <p>В этом коде <code>date:"d.m.Y"</code> – специфический формат даты. Важно подключать нужные фильтры, например, <code>django_filters</code>, с помощью <code>{% load django_filters %}</code>.</p> <p><b>Важный нюанс:</b> убедитесь, что фильтры и теги доступны в вашем шаблоне. Также, проверьте правильность именования переменных (<code>item.title</code>, <code>user.username</code>) и корректность работы моделей Django.</p> <h2>Обработка ошибок и отладка переопределенных шаблонов</h2> <p><strong>Проверяйте соответствие имен файлов.</strong> Убедитесь, что имя файла переопределённого шаблона точно соответствует имени файла в шаблоне приложения.</p> <p><strong>Проверяйте синтаксис и структуру.</strong> Неправильный синтаксис HTML, Django-тегов или ошибки форматирования часто ведут к ошибкам рендеринга. Осторожно проверяйте код на ошибки.</p> <p><strong>Рассматривайте иерархию шаблонов.</strong> Убедитесь, что шаблон, который вы переопределяете, находится в соответствующей директории проекта Django. Проверьте, что путь к переопределённому шаблону корректен.</p> <p><strong>Внимательно проверьте используемые переменные.</strong> Если шаблон не находит определённую переменную, проверьте, что переменная существует в контексте. Проверяйте входящие данные.</p> <p><strong>Проверьте настройки приложения.</strong> Некорректные настройки могут заблокировать или изменить работу шаблонов. Проверьте файлы конфигурации.</p> <p><strong>Диагностика ошибок браузера.</strong> Проверяйте консоль браузера. Ошибки JavaScript или CSS, возникающие при работе с переопределенным шаблоном, могут указывать на проблемные места.</p> <p><strong>Используйте специфичные инструменты Django.</strong> Если ошибка возникает при обработке запроса, обратите внимание на логи запросов Django или специальные инструменты отладки.</p> <h2>Вопрос-ответ:</h2> <h4>Как правильно переопределить шаблон в Django, чтобы он отображался в нужном месте приложения?</h4> <p>Переопределение шаблонов в Django происходит через создание собственного шаблона с тем же именем, что и в исходном каталоге шаблонов, но в вашем приложении. Например, если в стандартном шаблоне находятся файлы `base.html`, `registration/login.html`, то чтобы изменить шаблон `base.html`, нужно создать файл `myapp/templates/myapp/base.html` (где `myapp` — имя вашего приложения). Система Django будет использовать вашу версию шаблона, если она существует. Важно убедиться, что путь к вашему новому шаблону правильный и он находится в структуре, понятной Django. В шаблонах используйте теги `{% load %}`, чтобы подключать необходимые функции, и `{% include %}`, чтобы вставлять части шаблонов.</p> <h4>Можно ли менять оформление только одной страницы, а не всего приложения?</h4> <p>Да, это возможно. Вместо переопределения всего шаблона `base.html`, вы можете переопределить только нужные части. Если вам нужно изменить только страницу входа, воспользуйтесь механизмом включения. В шаблоне `base.html` или в другом общем шаблоне, используйте тег `{% include 'registration/my_login.html' %}` для вставки (в нужное место) переопределённого шаблона `my_login.html`. Это позволяет изменить конкретный элемент дизайна, не затрагивая остальные страницы.</p> <h4>Как переопределить шаблон при использовании приложения-расширения? Если я хочу изменить оформление, добавленное сторонним приложением?</h4> <p>Переопределение шаблонов приложения-расширения аналогично переопределению стандартных шаблонов. Создайте в структуре вашего приложения папку `templates` и поместите в неё нужный вам переопределённый шаблон с таким же именем, как у того файла, который вы хотите заменить. Система Django будет искать ваш шаблон в первую очередь, прежде чем обращаться к шаблону, предоставленному расширением. Важно правильно сопоставить структуру названий папок и файлов. Тщательно изучите документацию используемого расширения, чтобы узнать о потенциальных конфликтах и особенностях их обработки.</p> <h4>Возможны ли ошибки при переопределении шаблонов, и как их диагностировать?</h4> <p>Да, ошибки возможны. Частая причина – неправильный путь или имя файла. Проверьте, что переопределённый шаблон находится в правильной папке `templates` в вашем приложении. Используйте инструменты отладки Django, такие как консоль отладки или инструменты разработчика браузера для анализа HTML и ошибок рендеринга шаблонов. Обратите внимание на сообщения об ошибках Django, которые часто содержат ключевые подсказки по локализации проблемы. Внимательно изучайте все пути и имена файлов.</p> <h4>Как избежать конфликтов при переопределении шаблонов с несколькими приложениями в Django?</h4> <p>Конфликты могут возникнуть, если несколько приложений определяют шаблоны с одинаковыми именами. Необходимо чётко разделять имена шаблонов. При переопределении шаблонов убедитесь, что ваше приложение использует уникальные имена файлов шаблонов. Убедитесь, что paths к шаблонам корректно отображаются в вашей структуре проекта Django. Предотвращает ошибки и поддерживает более структурированную и устойчивую архитектуру вашего приложения.</p> <h4>Как переопределить шаблон в Django, чтобы он подключался к определённому каталогу, а не к стандартному?</h4> <p>Для подключения шаблонов Django к нестандартному каталогу, необходимо указать путь к нему в настройках проекта. В файле `settings.py` приложения Django, в переменной `TEMPLATES`, нужно изменить параметр `DIRS`. Вместо стандартного пути к шаблонам, укажите свой путь. Например, если ваша папка шаблонов находится в `templates_app`, а проект находится в `/myproject`, то `DIRS` будет содержать `[os.path.join(BASE_DIR, 'templates_app')]`. Важно убедиться, что указанный каталог существует и содержит необходимые файлы шаблонов. Также, не забудьте обновить `INSTALLED_APPS`, если шаблон используется в новом приложении. В противном случае, Django не сможет найти шаблон при запросе. Важно использовать `os.path.join()` для правильного определения пути, учитывающего разные операционные системы.</p> #INNER# </div> <div class="article-footer"> <div class="tags"> <a href="/blog/django-i-veb-razrabotka/">Django и веб-разработка</a> </div> <div class="blog-share"> <span>Поделиться:</span> <div class="ya-share2" data-curtain data-shape="round" data-services="vkontakte,telegram,viber,whatsapp"> <div class="ya-share2__container ya-share2__container_size_m ya-share2__container_color-scheme_normal ya-share2__container_shape_round"> <ul class="ya-share2__list ya-share2__list_direction_horizontal"> <li class="ya-share2__item ya-share2__item_service_vkontakte"> <a class="ya-share2__link" href="https://vk.com/share.php?url=https://kimgid.ru/blog/pereopredelenie-iz-kataloga-shablonov-prilozheniya-django-python/&title=Переопределение из каталога шаблонов приложения django python&utm_source=share2" rel="nofollow noopener" target="_blank" title="ВКонтакте"> <span class="ya-share2__badge"> <span class="ya-share2__icon"></span> </span> <span class="ya-share2__title">ВКонтакте</span> </a> </li> <li class="ya-share2__item ya-share2__item_service_telegram"> <a class="ya-share2__link" href="https://t.me/share/url?url=https://kimgid.ru/blog/pereopredelenie-iz-kataloga-shablonov-prilozheniya-django-python/&text=Переопределение из каталога шаблонов приложения django python&utm_source=share2" target="_blank" rel="nofollow noopener"> <span class="ya-share2__badge"> <span class="ya-share2__icon"></span> </span> <span class="ya-share2__title">Telegram</span> </a> </li> <li class="ya-share2__item ya-share2__item_service_viber"> <a class="ya-share2__link" href="viber://forward?text=Блог kimgid https://kimgid.ru/blog/pereopredelenie-iz-kataloga-shablonov-prilozheniya-django-python/&utm_source=share2" rel="nofollow" target="_blank" title="Viber"> <span class="ya-share2__badge"> <span class="ya-share2__icon"></span> </span> <span class="ya-share2__title">Viber</span> </a> </li> <li class="ya-share2__item ya-share2__item_service_whatsapp"> <a class="ya-share2__link" href="https://api.whatsapp.com/send?text=Переопределение из каталога шаблонов приложения django python https://kimgid.ru/blog/pereopredelenie-iz-kataloga-shablonov-prilozheniya-django-python/&utm_source=share2" rel="nofollow noopener" target="_blank" title="WhatsApp"> <span class="ya-share2__badge"> <span class="ya-share2__icon"></span> </span> <span class="ya-share2__title">WhatsApp</span> </a> </li> </ul> </div> </div> </div> </div> </div> <meta property="og:type" content="website"> <meta property="og:site_name" content="prokursy.online"> <meta property="og:type" content="article" /> <meta name="author" content="" /> <meta property="article:published_time" content="14.02.2025 08:02:25" /> <meta property="article:modified_time" content="09.03.2025 12:03:43" /> <meta property="og:url" content="https://prokursy.online/blog/pereopredelenie-iz-kataloga-shablonov-prilozheniya-django-python/"> <meta property="og:locale" content="ru"> <meta property="og:title" content="Блог \ Переопределение из каталога шаблонов приложения django python | prokursy.online"> <meta property="og:description" content="Для переопределения шаблона в Django, необходимо понимать структуру вашего проекта. Во-первых, найдите шаблон, который вы хотите переопределить, в каталоге вашего приложения. Затем, создайте в том же приложении подкаталог templates (если его нет), и поместите в него новый файл с тем же названием, что и исходный шаблон, но с изменением расширения с .html на .html. Например, из файла base.html в каталоге приложения создайте новый base.html в подкаталоге templates."> <meta property="og:image" content="https://prokursy.online/upload/iblock/dfe/idro6rosuz7x3of8tyo1431xsp712jbp/pereopredelenie_iz_kataloga_shablonov_prilozheniya_django_python.png"> <div class="pane related-posts"> <h4 class="decored-title">Похожие статьи</h4> <div class="row"> <div class="col-lg-4 mb-4 mb-lg-0"> <div class="post-preview"> <div class="post-preview-cover"><a href="/blog/ispolzovanie-fajlov-v-modelyax-django-python/"><img src="/upload/iblock/98c/1wwnthe3ujqgrvqa7ukhia6b7hjdcecp/ispolzovanie_faylov_v_modelyah_django_python.png" alt="Использование файлов в моделях django python"></a></div> <div class="post-preview-title"><a href="/blog/ispolzovanie-fajlov-v-modelyax-django-python/">Использование файлов в моделях django python</a></div> <span>02/10/2024</span> </div> </div> <div class="col-lg-4 mb-4 mb-lg-0"> <div class="post-preview"> <div class="post-preview-cover"><a href="/blog/jsonresponse-obekti-django-python/"><img src="/upload/iblock/4ec/cko031v4dwrxjxr0tzjqixli263tawpw/lego_i_epic_games_sozdayut_metavselennuyu_dlya_detey.png" alt="JsonResponse объекты django python"></a></div> <div class="post-preview-title"><a href="/blog/jsonresponse-obekti-django-python/">JsonResponse объекты django python</a></div> <span>09/13/2024</span> </div> </div> <div class="col-lg-4 mb-4 mb-lg-0"> <div class="post-preview"> <div class="post-preview-cover"><a href="/blog/bistrij-primer-django-python/"><img src="/upload/iblock/9c5/0o1pvpfhzef2983lssdh6c314gwp1v5t/bystryy_primer_django_python.png" alt="Быстрый пример django python"></a></div> <div class="post-preview-title"><a href="/blog/bistrij-primer-django-python/">Быстрый пример django python</a></div> <span>06/21/2024</span> </div> </div> </div> </div> <div class="pane pe-0 ps-0"> <div class="decored-title">0 Комментариев</div> <div class="comm-list"> </div> </div> <div class="pane"> <div>Комментариев на модерации: 0</div> <div class="decored-title">Оставьте комментарий</div> <div class="comm-form"> <form method="post" enctype="multipart/form-data" class="comment form"> <div class="row"> <div class="col-lg-12 mb-3"> <div class="rate-block"> <label>Ваша оценка</label> <div class="rating"> <div class="votes_block with-text"> <div class="ratings"> <div class="item-rating" data-message="Очень плохо"><i class="svg inline svg-inline-star" aria-hidden="true"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_172_19507)"> <path d="M8.56997 7.63003L1.89997 8.60003H1.77997C1.60144 8.64504 1.4388 8.73847 1.30997 8.87003C1.15884 9.00184 1.05084 9.17605 0.999975 9.37003C0.955087 9.55061 0.955087 9.73944 0.999975 9.92003C1.04781 10.0997 1.14477 10.2624 1.27997 10.39L6.15997 15.1L4.99997 21.75V21.87C4.99106 22.0532 5.02891 22.2356 5.10997 22.4C5.19238 22.5687 5.3206 22.7108 5.47997 22.81C5.6303 22.9241 5.8115 22.9903 5.99997 23C6.18433 23.0097 6.36777 22.9682 6.52997 22.88L12.53 19.74L18.53 22.88H18.63C18.7958 22.9448 18.9759 22.9641 19.1517 22.936C19.3275 22.9078 19.4926 22.8333 19.63 22.72C19.7753 22.6058 19.886 22.4534 19.95 22.28C20.0213 22.106 20.0421 21.9154 20.01 21.73L18.84 15.1L23.68 10.39L23.77 10.3C23.8867 10.1549 23.9657 9.9831 24 9.80003C24.0302 9.61794 24.0094 9.43104 23.94 9.26003C23.8694 9.08756 23.7558 8.93607 23.61 8.82003C23.467 8.70171 23.2938 8.62554 23.11 8.60003L16.43 7.60003L13.43 1.60003C13.3414 1.42657 13.2064 1.28115 13.04 1.18003C12.8812 1.06898 12.6936 1.00645 12.5 1.00003C12.305 0.99859 12.1138 1.0542 11.95 1.16003C11.7835 1.26115 11.6485 1.40657 11.56 1.58003L8.56997 7.63003Z" fill="#E5C45B"></path> <path d="M23.93 9.25997C23.8594 9.08751 23.7458 8.93602 23.6 8.81997C23.457 8.70166 23.2838 8.62548 23.1 8.59997L16.42 7.59997L13.42 1.59997C13.3314 1.42651 13.1964 1.2811 13.03 1.17997C12.8667 1.07244 12.6755 1.01514 12.48 1.01514C12.2845 1.01514 12.0933 1.07244 11.93 1.17997C11.7635 1.2811 11.6285 1.42651 11.54 1.59997L8.53997 7.64997L1.89997 8.59997H1.77997C1.60144 8.64499 1.4388 8.73842 1.30997 8.86997C1.15884 9.00179 1.05084 9.17599 0.999975 9.36997C0.955087 9.55056 0.955087 9.73939 0.999975 9.91997C1.04781 10.0996 1.14477 10.2624 1.27997 10.39L6.15997 15.1L4.99997 21.75V21.87C4.99106 22.0531 5.02891 22.2355 5.10997 22.4C5.19238 22.5687 5.3206 22.7107 5.47997 22.81C5.6303 22.9241 5.8115 22.9903 5.99997 23C6.18433 23.0097 6.36777 22.9681 6.52997 22.88L12.53 19.74L18.53 22.88H18.63C18.801 22.9494 18.9879 22.9702 19.17 22.94C19.3552 22.9196 19.5298 22.8428 19.67 22.72C19.8153 22.6057 19.926 22.4534 19.99 22.28C20.0613 22.1059 20.0821 21.9153 20.05 21.73L18.84 15.1L23.68 10.39L23.77 10.3C23.8867 10.1548 23.9657 9.98305 24 9.79997C24.027 9.61696 24.0028 9.43003 23.93 9.25997Z" fill="#DDDDDD"></path> <path opacity="0.07" d="M12.5 2.00002L15.5 8.05002C15.5723 8.19372 15.6783 8.31785 15.8089 8.41186C15.9394 8.50586 16.0907 8.56698 16.25 8.59002L23 9.60002C23 9.60002 23 9.60002 23.05 9.60002C23.1 9.60002 23 9.66002 23 9.66002L18.18 14.35C18.0627 14.4635 17.975 14.6039 17.9244 14.759C17.8739 14.9141 17.862 15.0793 17.89 15.24L19 22L13 18.83C12.8596 18.7508 12.7011 18.7095 12.54 18.71C12.3758 18.7108 12.2144 18.752 12.07 18.83L5.99997 22V21.95L7.13997 15.33C7.16791 15.1693 7.15609 15.0041 7.10554 14.849C7.05499 14.6939 6.96725 14.5535 6.84997 14.44L1.99997 9.65002V9.60002L8.64997 8.60002C8.80921 8.57698 8.96053 8.51586 9.0911 8.42186C9.22167 8.32785 9.32762 8.20372 9.39997 8.06002L12.4 1.99002M12.4 0.990017C12.205 0.98858 12.0138 1.0442 11.85 1.15002C11.6835 1.25114 11.5485 1.39656 11.46 1.57002L8.45997 7.62002L1.89997 8.60002H1.77997C1.60144 8.64503 1.4388 8.73846 1.30997 8.87002C1.15884 9.00183 1.05084 9.17604 0.999975 9.37002C0.955087 9.5506 0.955087 9.73943 0.999975 9.92002C1.04781 10.0997 1.14477 10.2624 1.27997 10.39L6.15997 15.1L4.99997 21.75V21.87C4.99106 22.0532 5.02891 22.2356 5.10997 22.4C5.19238 22.5687 5.3206 22.7108 5.47997 22.81C5.6303 22.9241 5.8115 22.9903 5.99997 23C6.16837 22.9978 6.33347 22.9531 6.47997 22.87L12.48 19.73L18.48 22.87H18.58C18.7086 22.944 18.8521 22.9884 19 23H19.16C19.3452 22.9796 19.5198 22.9028 19.66 22.78C19.8053 22.6657 19.916 22.5134 19.98 22.34C20.0513 22.166 20.0721 21.9753 20.04 21.79L18.84 15.1L23.68 10.39L23.77 10.3C23.8867 10.1549 23.9657 9.98309 24 9.80002C24.0302 9.61793 24.0094 9.43103 23.94 9.26002C23.8694 9.08755 23.7558 8.93606 23.61 8.82002C23.467 8.7017 23.2938 8.62553 23.11 8.60002L16.43 7.60002L13.43 1.60002C13.3414 1.42656 13.2064 1.28114 13.04 1.18002C12.8812 1.06897 12.6936 1.00644 12.5 1.00002L12.4 0.990017Z" fill="black"></path> </g> <defs> <clipPath id="clip0_172_19507"> <rect width="25" height="24" fill="white"></rect> </clipPath> </defs> </svg> </i></div> <div class="item-rating" data-message="Плохо"><i class="svg inline svg-inline-star" aria-hidden="true"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_172_19507)"> <path d="M8.56997 7.63003L1.89997 8.60003H1.77997C1.60144 8.64504 1.4388 8.73847 1.30997 8.87003C1.15884 9.00184 1.05084 9.17605 0.999975 9.37003C0.955087 9.55061 0.955087 9.73944 0.999975 9.92003C1.04781 10.0997 1.14477 10.2624 1.27997 10.39L6.15997 15.1L4.99997 21.75V21.87C4.99106 22.0532 5.02891 22.2356 5.10997 22.4C5.19238 22.5687 5.3206 22.7108 5.47997 22.81C5.6303 22.9241 5.8115 22.9903 5.99997 23C6.18433 23.0097 6.36777 22.9682 6.52997 22.88L12.53 19.74L18.53 22.88H18.63C18.7958 22.9448 18.9759 22.9641 19.1517 22.936C19.3275 22.9078 19.4926 22.8333 19.63 22.72C19.7753 22.6058 19.886 22.4534 19.95 22.28C20.0213 22.106 20.0421 21.9154 20.01 21.73L18.84 15.1L23.68 10.39L23.77 10.3C23.8867 10.1549 23.9657 9.9831 24 9.80003C24.0302 9.61794 24.0094 9.43104 23.94 9.26003C23.8694 9.08756 23.7558 8.93607 23.61 8.82003C23.467 8.70171 23.2938 8.62554 23.11 8.60003L16.43 7.60003L13.43 1.60003C13.3414 1.42657 13.2064 1.28115 13.04 1.18003C12.8812 1.06898 12.6936 1.00645 12.5 1.00003C12.305 0.99859 12.1138 1.0542 11.95 1.16003C11.7835 1.26115 11.6485 1.40657 11.56 1.58003L8.56997 7.63003Z" fill="#E5C45B"></path> <path d="M23.93 9.25997C23.8594 9.08751 23.7458 8.93602 23.6 8.81997C23.457 8.70166 23.2838 8.62548 23.1 8.59997L16.42 7.59997L13.42 1.59997C13.3314 1.42651 13.1964 1.2811 13.03 1.17997C12.8667 1.07244 12.6755 1.01514 12.48 1.01514C12.2845 1.01514 12.0933 1.07244 11.93 1.17997C11.7635 1.2811 11.6285 1.42651 11.54 1.59997L8.53997 7.64997L1.89997 8.59997H1.77997C1.60144 8.64499 1.4388 8.73842 1.30997 8.86997C1.15884 9.00179 1.05084 9.17599 0.999975 9.36997C0.955087 9.55056 0.955087 9.73939 0.999975 9.91997C1.04781 10.0996 1.14477 10.2624 1.27997 10.39L6.15997 15.1L4.99997 21.75V21.87C4.99106 22.0531 5.02891 22.2355 5.10997 22.4C5.19238 22.5687 5.3206 22.7107 5.47997 22.81C5.6303 22.9241 5.8115 22.9903 5.99997 23C6.18433 23.0097 6.36777 22.9681 6.52997 22.88L12.53 19.74L18.53 22.88H18.63C18.801 22.9494 18.9879 22.9702 19.17 22.94C19.3552 22.9196 19.5298 22.8428 19.67 22.72C19.8153 22.6057 19.926 22.4534 19.99 22.28C20.0613 22.1059 20.0821 21.9153 20.05 21.73L18.84 15.1L23.68 10.39L23.77 10.3C23.8867 10.1548 23.9657 9.98305 24 9.79997C24.027 9.61696 24.0028 9.43003 23.93 9.25997Z" fill="#DDDDDD"></path> <path opacity="0.07" d="M12.5 2.00002L15.5 8.05002C15.5723 8.19372 15.6783 8.31785 15.8089 8.41186C15.9394 8.50586 16.0907 8.56698 16.25 8.59002L23 9.60002C23 9.60002 23 9.60002 23.05 9.60002C23.1 9.60002 23 9.66002 23 9.66002L18.18 14.35C18.0627 14.4635 17.975 14.6039 17.9244 14.759C17.8739 14.9141 17.862 15.0793 17.89 15.24L19 22L13 18.83C12.8596 18.7508 12.7011 18.7095 12.54 18.71C12.3758 18.7108 12.2144 18.752 12.07 18.83L5.99997 22V21.95L7.13997 15.33C7.16791 15.1693 7.15609 15.0041 7.10554 14.849C7.05499 14.6939 6.96725 14.5535 6.84997 14.44L1.99997 9.65002V9.60002L8.64997 8.60002C8.80921 8.57698 8.96053 8.51586 9.0911 8.42186C9.22167 8.32785 9.32762 8.20372 9.39997 8.06002L12.4 1.99002M12.4 0.990017C12.205 0.98858 12.0138 1.0442 11.85 1.15002C11.6835 1.25114 11.5485 1.39656 11.46 1.57002L8.45997 7.62002L1.89997 8.60002H1.77997C1.60144 8.64503 1.4388 8.73846 1.30997 8.87002C1.15884 9.00183 1.05084 9.17604 0.999975 9.37002C0.955087 9.5506 0.955087 9.73943 0.999975 9.92002C1.04781 10.0997 1.14477 10.2624 1.27997 10.39L6.15997 15.1L4.99997 21.75V21.87C4.99106 22.0532 5.02891 22.2356 5.10997 22.4C5.19238 22.5687 5.3206 22.7108 5.47997 22.81C5.6303 22.9241 5.8115 22.9903 5.99997 23C6.16837 22.9978 6.33347 22.9531 6.47997 22.87L12.48 19.73L18.48 22.87H18.58C18.7086 22.944 18.8521 22.9884 19 23H19.16C19.3452 22.9796 19.5198 22.9028 19.66 22.78C19.8053 22.6657 19.916 22.5134 19.98 22.34C20.0513 22.166 20.0721 21.9753 20.04 21.79L18.84 15.1L23.68 10.39L23.77 10.3C23.8867 10.1549 23.9657 9.98309 24 9.80002C24.0302 9.61793 24.0094 9.43103 23.94 9.26002C23.8694 9.08755 23.7558 8.93606 23.61 8.82002C23.467 8.7017 23.2938 8.62553 23.11 8.60002L16.43 7.60002L13.43 1.60002C13.3414 1.42656 13.2064 1.28114 13.04 1.18002C12.8812 1.06897 12.6936 1.00644 12.5 1.00002L12.4 0.990017Z" fill="black"></path> </g> <defs> <clipPath id="clip0_172_19507"> <rect width="25" height="24" fill="white"></rect> </clipPath> </defs> </svg> </i></div> <div class="item-rating" data-message="Нормально"><i class="svg inline svg-inline-star" aria-hidden="true"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_172_19507)"> <path d="M8.56997 7.63003L1.89997 8.60003H1.77997C1.60144 8.64504 1.4388 8.73847 1.30997 8.87003C1.15884 9.00184 1.05084 9.17605 0.999975 9.37003C0.955087 9.55061 0.955087 9.73944 0.999975 9.92003C1.04781 10.0997 1.14477 10.2624 1.27997 10.39L6.15997 15.1L4.99997 21.75V21.87C4.99106 22.0532 5.02891 22.2356 5.10997 22.4C5.19238 22.5687 5.3206 22.7108 5.47997 22.81C5.6303 22.9241 5.8115 22.9903 5.99997 23C6.18433 23.0097 6.36777 22.9682 6.52997 22.88L12.53 19.74L18.53 22.88H18.63C18.7958 22.9448 18.9759 22.9641 19.1517 22.936C19.3275 22.9078 19.4926 22.8333 19.63 22.72C19.7753 22.6058 19.886 22.4534 19.95 22.28C20.0213 22.106 20.0421 21.9154 20.01 21.73L18.84 15.1L23.68 10.39L23.77 10.3C23.8867 10.1549 23.9657 9.9831 24 9.80003C24.0302 9.61794 24.0094 9.43104 23.94 9.26003C23.8694 9.08756 23.7558 8.93607 23.61 8.82003C23.467 8.70171 23.2938 8.62554 23.11 8.60003L16.43 7.60003L13.43 1.60003C13.3414 1.42657 13.2064 1.28115 13.04 1.18003C12.8812 1.06898 12.6936 1.00645 12.5 1.00003C12.305 0.99859 12.1138 1.0542 11.95 1.16003C11.7835 1.26115 11.6485 1.40657 11.56 1.58003L8.56997 7.63003Z" fill="#E5C45B"></path> <path d="M23.93 9.25997C23.8594 9.08751 23.7458 8.93602 23.6 8.81997C23.457 8.70166 23.2838 8.62548 23.1 8.59997L16.42 7.59997L13.42 1.59997C13.3314 1.42651 13.1964 1.2811 13.03 1.17997C12.8667 1.07244 12.6755 1.01514 12.48 1.01514C12.2845 1.01514 12.0933 1.07244 11.93 1.17997C11.7635 1.2811 11.6285 1.42651 11.54 1.59997L8.53997 7.64997L1.89997 8.59997H1.77997C1.60144 8.64499 1.4388 8.73842 1.30997 8.86997C1.15884 9.00179 1.05084 9.17599 0.999975 9.36997C0.955087 9.55056 0.955087 9.73939 0.999975 9.91997C1.04781 10.0996 1.14477 10.2624 1.27997 10.39L6.15997 15.1L4.99997 21.75V21.87C4.99106 22.0531 5.02891 22.2355 5.10997 22.4C5.19238 22.5687 5.3206 22.7107 5.47997 22.81C5.6303 22.9241 5.8115 22.9903 5.99997 23C6.18433 23.0097 6.36777 22.9681 6.52997 22.88L12.53 19.74L18.53 22.88H18.63C18.801 22.9494 18.9879 22.9702 19.17 22.94C19.3552 22.9196 19.5298 22.8428 19.67 22.72C19.8153 22.6057 19.926 22.4534 19.99 22.28C20.0613 22.1059 20.0821 21.9153 20.05 21.73L18.84 15.1L23.68 10.39L23.77 10.3C23.8867 10.1548 23.9657 9.98305 24 9.79997C24.027 9.61696 24.0028 9.43003 23.93 9.25997Z" fill="#DDDDDD"></path> <path opacity="0.07" d="M12.5 2.00002L15.5 8.05002C15.5723 8.19372 15.6783 8.31785 15.8089 8.41186C15.9394 8.50586 16.0907 8.56698 16.25 8.59002L23 9.60002C23 9.60002 23 9.60002 23.05 9.60002C23.1 9.60002 23 9.66002 23 9.66002L18.18 14.35C18.0627 14.4635 17.975 14.6039 17.9244 14.759C17.8739 14.9141 17.862 15.0793 17.89 15.24L19 22L13 18.83C12.8596 18.7508 12.7011 18.7095 12.54 18.71C12.3758 18.7108 12.2144 18.752 12.07 18.83L5.99997 22V21.95L7.13997 15.33C7.16791 15.1693 7.15609 15.0041 7.10554 14.849C7.05499 14.6939 6.96725 14.5535 6.84997 14.44L1.99997 9.65002V9.60002L8.64997 8.60002C8.80921 8.57698 8.96053 8.51586 9.0911 8.42186C9.22167 8.32785 9.32762 8.20372 9.39997 8.06002L12.4 1.99002M12.4 0.990017C12.205 0.98858 12.0138 1.0442 11.85 1.15002C11.6835 1.25114 11.5485 1.39656 11.46 1.57002L8.45997 7.62002L1.89997 8.60002H1.77997C1.60144 8.64503 1.4388 8.73846 1.30997 8.87002C1.15884 9.00183 1.05084 9.17604 0.999975 9.37002C0.955087 9.5506 0.955087 9.73943 0.999975 9.92002C1.04781 10.0997 1.14477 10.2624 1.27997 10.39L6.15997 15.1L4.99997 21.75V21.87C4.99106 22.0532 5.02891 22.2356 5.10997 22.4C5.19238 22.5687 5.3206 22.7108 5.47997 22.81C5.6303 22.9241 5.8115 22.9903 5.99997 23C6.16837 22.9978 6.33347 22.9531 6.47997 22.87L12.48 19.73L18.48 22.87H18.58C18.7086 22.944 18.8521 22.9884 19 23H19.16C19.3452 22.9796 19.5198 22.9028 19.66 22.78C19.8053 22.6657 19.916 22.5134 19.98 22.34C20.0513 22.166 20.0721 21.9753 20.04 21.79L18.84 15.1L23.68 10.39L23.77 10.3C23.8867 10.1549 23.9657 9.98309 24 9.80002C24.0302 9.61793 24.0094 9.43103 23.94 9.26002C23.8694 9.08755 23.7558 8.93606 23.61 8.82002C23.467 8.7017 23.2938 8.62553 23.11 8.60002L16.43 7.60002L13.43 1.60002C13.3414 1.42656 13.2064 1.28114 13.04 1.18002C12.8812 1.06897 12.6936 1.00644 12.5 1.00002L12.4 0.990017Z" fill="black"></path> </g> <defs> <clipPath id="clip0_172_19507"> <rect width="25" height="24" fill="white"></rect> </clipPath> </defs> </svg> </i></div> <div class="item-rating" data-message="Хорошо"><i class="svg inline svg-inline-star" aria-hidden="true"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_172_19507)"> <path d="M8.56997 7.63003L1.89997 8.60003H1.77997C1.60144 8.64504 1.4388 8.73847 1.30997 8.87003C1.15884 9.00184 1.05084 9.17605 0.999975 9.37003C0.955087 9.55061 0.955087 9.73944 0.999975 9.92003C1.04781 10.0997 1.14477 10.2624 1.27997 10.39L6.15997 15.1L4.99997 21.75V21.87C4.99106 22.0532 5.02891 22.2356 5.10997 22.4C5.19238 22.5687 5.3206 22.7108 5.47997 22.81C5.6303 22.9241 5.8115 22.9903 5.99997 23C6.18433 23.0097 6.36777 22.9682 6.52997 22.88L12.53 19.74L18.53 22.88H18.63C18.7958 22.9448 18.9759 22.9641 19.1517 22.936C19.3275 22.9078 19.4926 22.8333 19.63 22.72C19.7753 22.6058 19.886 22.4534 19.95 22.28C20.0213 22.106 20.0421 21.9154 20.01 21.73L18.84 15.1L23.68 10.39L23.77 10.3C23.8867 10.1549 23.9657 9.9831 24 9.80003C24.0302 9.61794 24.0094 9.43104 23.94 9.26003C23.8694 9.08756 23.7558 8.93607 23.61 8.82003C23.467 8.70171 23.2938 8.62554 23.11 8.60003L16.43 7.60003L13.43 1.60003C13.3414 1.42657 13.2064 1.28115 13.04 1.18003C12.8812 1.06898 12.6936 1.00645 12.5 1.00003C12.305 0.99859 12.1138 1.0542 11.95 1.16003C11.7835 1.26115 11.6485 1.40657 11.56 1.58003L8.56997 7.63003Z" fill="#E5C45B"></path> <path d="M23.93 9.25997C23.8594 9.08751 23.7458 8.93602 23.6 8.81997C23.457 8.70166 23.2838 8.62548 23.1 8.59997L16.42 7.59997L13.42 1.59997C13.3314 1.42651 13.1964 1.2811 13.03 1.17997C12.8667 1.07244 12.6755 1.01514 12.48 1.01514C12.2845 1.01514 12.0933 1.07244 11.93 1.17997C11.7635 1.2811 11.6285 1.42651 11.54 1.59997L8.53997 7.64997L1.89997 8.59997H1.77997C1.60144 8.64499 1.4388 8.73842 1.30997 8.86997C1.15884 9.00179 1.05084 9.17599 0.999975 9.36997C0.955087 9.55056 0.955087 9.73939 0.999975 9.91997C1.04781 10.0996 1.14477 10.2624 1.27997 10.39L6.15997 15.1L4.99997 21.75V21.87C4.99106 22.0531 5.02891 22.2355 5.10997 22.4C5.19238 22.5687 5.3206 22.7107 5.47997 22.81C5.6303 22.9241 5.8115 22.9903 5.99997 23C6.18433 23.0097 6.36777 22.9681 6.52997 22.88L12.53 19.74L18.53 22.88H18.63C18.801 22.9494 18.9879 22.9702 19.17 22.94C19.3552 22.9196 19.5298 22.8428 19.67 22.72C19.8153 22.6057 19.926 22.4534 19.99 22.28C20.0613 22.1059 20.0821 21.9153 20.05 21.73L18.84 15.1L23.68 10.39L23.77 10.3C23.8867 10.1548 23.9657 9.98305 24 9.79997C24.027 9.61696 24.0028 9.43003 23.93 9.25997Z" fill="#DDDDDD"></path> <path opacity="0.07" d="M12.5 2.00002L15.5 8.05002C15.5723 8.19372 15.6783 8.31785 15.8089 8.41186C15.9394 8.50586 16.0907 8.56698 16.25 8.59002L23 9.60002C23 9.60002 23 9.60002 23.05 9.60002C23.1 9.60002 23 9.66002 23 9.66002L18.18 14.35C18.0627 14.4635 17.975 14.6039 17.9244 14.759C17.8739 14.9141 17.862 15.0793 17.89 15.24L19 22L13 18.83C12.8596 18.7508 12.7011 18.7095 12.54 18.71C12.3758 18.7108 12.2144 18.752 12.07 18.83L5.99997 22V21.95L7.13997 15.33C7.16791 15.1693 7.15609 15.0041 7.10554 14.849C7.05499 14.6939 6.96725 14.5535 6.84997 14.44L1.99997 9.65002V9.60002L8.64997 8.60002C8.80921 8.57698 8.96053 8.51586 9.0911 8.42186C9.22167 8.32785 9.32762 8.20372 9.39997 8.06002L12.4 1.99002M12.4 0.990017C12.205 0.98858 12.0138 1.0442 11.85 1.15002C11.6835 1.25114 11.5485 1.39656 11.46 1.57002L8.45997 7.62002L1.89997 8.60002H1.77997C1.60144 8.64503 1.4388 8.73846 1.30997 8.87002C1.15884 9.00183 1.05084 9.17604 0.999975 9.37002C0.955087 9.5506 0.955087 9.73943 0.999975 9.92002C1.04781 10.0997 1.14477 10.2624 1.27997 10.39L6.15997 15.1L4.99997 21.75V21.87C4.99106 22.0532 5.02891 22.2356 5.10997 22.4C5.19238 22.5687 5.3206 22.7108 5.47997 22.81C5.6303 22.9241 5.8115 22.9903 5.99997 23C6.16837 22.9978 6.33347 22.9531 6.47997 22.87L12.48 19.73L18.48 22.87H18.58C18.7086 22.944 18.8521 22.9884 19 23H19.16C19.3452 22.9796 19.5198 22.9028 19.66 22.78C19.8053 22.6657 19.916 22.5134 19.98 22.34C20.0513 22.166 20.0721 21.9753 20.04 21.79L18.84 15.1L23.68 10.39L23.77 10.3C23.8867 10.1549 23.9657 9.98309 24 9.80002C24.0302 9.61793 24.0094 9.43103 23.94 9.26002C23.8694 9.08755 23.7558 8.93606 23.61 8.82002C23.467 8.7017 23.2938 8.62553 23.11 8.60002L16.43 7.60002L13.43 1.60002C13.3414 1.42656 13.2064 1.28114 13.04 1.18002C12.8812 1.06897 12.6936 1.00644 12.5 1.00002L12.4 0.990017Z" fill="black"></path> </g> <defs> <clipPath id="clip0_172_19507"> <rect width="25" height="24" fill="white"></rect> </clipPath> </defs> </svg> </i></div> <div class="item-rating" data-message="Отлично"><i class="svg inline svg-inline-star" aria-hidden="true"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_172_19507)"> <path d="M8.56997 7.63003L1.89997 8.60003H1.77997C1.60144 8.64504 1.4388 8.73847 1.30997 8.87003C1.15884 9.00184 1.05084 9.17605 0.999975 9.37003C0.955087 9.55061 0.955087 9.73944 0.999975 9.92003C1.04781 10.0997 1.14477 10.2624 1.27997 10.39L6.15997 15.1L4.99997 21.75V21.87C4.99106 22.0532 5.02891 22.2356 5.10997 22.4C5.19238 22.5687 5.3206 22.7108 5.47997 22.81C5.6303 22.9241 5.8115 22.9903 5.99997 23C6.18433 23.0097 6.36777 22.9682 6.52997 22.88L12.53 19.74L18.53 22.88H18.63C18.7958 22.9448 18.9759 22.9641 19.1517 22.936C19.3275 22.9078 19.4926 22.8333 19.63 22.72C19.7753 22.6058 19.886 22.4534 19.95 22.28C20.0213 22.106 20.0421 21.9154 20.01 21.73L18.84 15.1L23.68 10.39L23.77 10.3C23.8867 10.1549 23.9657 9.9831 24 9.80003C24.0302 9.61794 24.0094 9.43104 23.94 9.26003C23.8694 9.08756 23.7558 8.93607 23.61 8.82003C23.467 8.70171 23.2938 8.62554 23.11 8.60003L16.43 7.60003L13.43 1.60003C13.3414 1.42657 13.2064 1.28115 13.04 1.18003C12.8812 1.06898 12.6936 1.00645 12.5 1.00003C12.305 0.99859 12.1138 1.0542 11.95 1.16003C11.7835 1.26115 11.6485 1.40657 11.56 1.58003L8.56997 7.63003Z" fill="#E5C45B"></path> <path d="M23.93 9.25997C23.8594 9.08751 23.7458 8.93602 23.6 8.81997C23.457 8.70166 23.2838 8.62548 23.1 8.59997L16.42 7.59997L13.42 1.59997C13.3314 1.42651 13.1964 1.2811 13.03 1.17997C12.8667 1.07244 12.6755 1.01514 12.48 1.01514C12.2845 1.01514 12.0933 1.07244 11.93 1.17997C11.7635 1.2811 11.6285 1.42651 11.54 1.59997L8.53997 7.64997L1.89997 8.59997H1.77997C1.60144 8.64499 1.4388 8.73842 1.30997 8.86997C1.15884 9.00179 1.05084 9.17599 0.999975 9.36997C0.955087 9.55056 0.955087 9.73939 0.999975 9.91997C1.04781 10.0996 1.14477 10.2624 1.27997 10.39L6.15997 15.1L4.99997 21.75V21.87C4.99106 22.0531 5.02891 22.2355 5.10997 22.4C5.19238 22.5687 5.3206 22.7107 5.47997 22.81C5.6303 22.9241 5.8115 22.9903 5.99997 23C6.18433 23.0097 6.36777 22.9681 6.52997 22.88L12.53 19.74L18.53 22.88H18.63C18.801 22.9494 18.9879 22.9702 19.17 22.94C19.3552 22.9196 19.5298 22.8428 19.67 22.72C19.8153 22.6057 19.926 22.4534 19.99 22.28C20.0613 22.1059 20.0821 21.9153 20.05 21.73L18.84 15.1L23.68 10.39L23.77 10.3C23.8867 10.1548 23.9657 9.98305 24 9.79997C24.027 9.61696 24.0028 9.43003 23.93 9.25997Z" fill="#DDDDDD"></path> <path opacity="0.07" d="M12.5 2.00002L15.5 8.05002C15.5723 8.19372 15.6783 8.31785 15.8089 8.41186C15.9394 8.50586 16.0907 8.56698 16.25 8.59002L23 9.60002C23 9.60002 23 9.60002 23.05 9.60002C23.1 9.60002 23 9.66002 23 9.66002L18.18 14.35C18.0627 14.4635 17.975 14.6039 17.9244 14.759C17.8739 14.9141 17.862 15.0793 17.89 15.24L19 22L13 18.83C12.8596 18.7508 12.7011 18.7095 12.54 18.71C12.3758 18.7108 12.2144 18.752 12.07 18.83L5.99997 22V21.95L7.13997 15.33C7.16791 15.1693 7.15609 15.0041 7.10554 14.849C7.05499 14.6939 6.96725 14.5535 6.84997 14.44L1.99997 9.65002V9.60002L8.64997 8.60002C8.80921 8.57698 8.96053 8.51586 9.0911 8.42186C9.22167 8.32785 9.32762 8.20372 9.39997 8.06002L12.4 1.99002M12.4 0.990017C12.205 0.98858 12.0138 1.0442 11.85 1.15002C11.6835 1.25114 11.5485 1.39656 11.46 1.57002L8.45997 7.62002L1.89997 8.60002H1.77997C1.60144 8.64503 1.4388 8.73846 1.30997 8.87002C1.15884 9.00183 1.05084 9.17604 0.999975 9.37002C0.955087 9.5506 0.955087 9.73943 0.999975 9.92002C1.04781 10.0997 1.14477 10.2624 1.27997 10.39L6.15997 15.1L4.99997 21.75V21.87C4.99106 22.0532 5.02891 22.2356 5.10997 22.4C5.19238 22.5687 5.3206 22.7108 5.47997 22.81C5.6303 22.9241 5.8115 22.9903 5.99997 23C6.16837 22.9978 6.33347 22.9531 6.47997 22.87L12.48 19.73L18.48 22.87H18.58C18.7086 22.944 18.8521 22.9884 19 23H19.16C19.3452 22.9796 19.5198 22.9028 19.66 22.78C19.8053 22.6657 19.916 22.5134 19.98 22.34C20.0513 22.166 20.0721 21.9753 20.04 21.79L18.84 15.1L23.68 10.39L23.77 10.3C23.8867 10.1549 23.9657 9.98309 24 9.80002C24.0302 9.61793 24.0094 9.43103 23.94 9.26002C23.8694 9.08755 23.7558 8.93606 23.61 8.82002C23.467 8.7017 23.2938 8.62553 23.11 8.60002L16.43 7.60002L13.43 1.60002C13.3414 1.42656 13.2064 1.28114 13.04 1.18002C12.8812 1.06897 12.6936 1.00644 12.5 1.00002L12.4 0.990017Z" fill="black"></path> </g> <defs> <clipPath id="clip0_172_19507"> <rect width="25" height="24" fill="white"></rect> </clipPath> </defs> </svg> </i></div> </div> </div> </div> </div> </div> <div class="col-lg-6"> <div class="form-group"> <label for="">Ваше имя</label> <div class="input-box" required> <i class="far fa-user"></i> <input type="text" class="form-control" required name="name"> </div> </div> </div> <div class="col-lg-6"> <div class="form-group"> <label for="">Ваша почта</label> <div class="input-box" required> <i class="far fa-envelope"></i> <input type="email" class="form-control" required name="email"> </div> </div> </div> </div> <div class="form-group"> <div class="input-box"> <i class="far fa-comment-alt"></i> <textarea name="comment" id="" class="form-control"></textarea> </div> </div> <input type="hidden" name="article" value="68348"> <input type="hidden" name="rating" value="5" class="rating_form"> <input type="hidden" name="link" value="https://prokursy.online/blog/pereopredelenie-iz-kataloga-shablonov-prilozheniya-django-python/"> <input type="hidden" name="ip" value="18.97.14.86"> <input type="hidden" name="sid" value="32"> <div class="row"> <div class="col-lg-6"> <div class="form-group"> <label for="">Прикрепите фото</label> <input type="file" class="form-control" name="file"> </div> <div class="form-check mb-4"> <input class="form-check-input" type="checkbox" id="agree2" name="agreement" checked> <label class="form-check-label" for="agree2"> Я соглашаюсь на <a href="#">обработку персональных данных</a> </label> </div> </div> </div> <div class="row mb-3"> <div class="col-lg-4"> <button type="submit" class="btn btn-full">Отправить</button> </div> </div> </form> <div class="modal-content inline_success"> <div class="modal-body"> <div class="thank-ico"> <img src="/local/templates/kimgid/img/check.svg" width="93" alt=""> </div> <p>Ваш комментарий добавлен! <br>Он будет размещен после модерации</p> </div> </div> </div> </div> </div> <div class="sidebar"> <div class="widget"> <h3>Популярные статьи</h3> <div class="wiget-grp"> </div> </div> <div class="widget"> <h3>Categories</h3> <ul class="cat-nav"> <li><a href="/blog/blender-i-3d-grafika/">Blender и 3D-графика</a></li> <li><a href="/blog/django-i-veb-razrabotka/">Django и веб-разработка</a></li> <li><a href="/blog/nft-i-blokcheyn-v-igrakh/">NFT и блокчейн в играх</a></li> <li><a href="/blog/python-i-programmirovanie/">Python и программирование</a></li> <li><a href="/blog/unity-i-igrovye-dvizhki/">Unity и игровые движки</a></li> <li><a href="/blog/vr-i-metavselennye/">VR и метавселенные</a></li> <li><a href="/blog/biznes-strategii/">Бизнес-стратегии</a></li> <li><a href="/blog/vostrebovannye-professii/">Востребованные профессии</a></li> <li><a href="/blog/geymdizayn/">Геймдизайн</a></li> <li><a href="/blog/grafika-i-3d-modelirovanie/">Графика и 3D-моделирование</a></li> <li><a href="/blog/igrovaya-industriya-i-biznes/">Игровая индустрия и бизнес</a></li> <li><a href="/blog/igrovaya-kultura-i-teoriya/">Игровая культура и теория</a></li> <li><a href="/blog/igrovye-metodiki-v-obuchenii/">Игровые методики в обучении</a></li> <li><a href="/blog/igrovye-mekhaniki/">Игровые механики</a></li> <li><a href="/blog/igrovye-novosti/">Игровые новости</a></li> <li><a href="/blog/igrovye-obzory/">Игровые обзоры</a></li> <li><a href="/blog/interaktivnye-formaty/">Интерактивные форматы</a></li> <li><a href="/blog/iskusstvennyy-intellekt/">Искусственный интеллект</a></li> <li><a href="/blog/istoriya-igr-i-studiy/">История игр и студий</a></li> <li><a href="/blog/neyroseti/">Нейросети</a></li> <li><a href="/blog/prochee/">Прочее</a></li> <li><a href="/blog/psikhologiya/">Психология</a></li> <li><a href="/blog/razrabotka-igr/">Разработка игр</a></li> <li><a href="/blog/rukovodstva-i-gaydy/">Руководства и гайды</a></li> <li><a href="/blog/saund-dizayn-i-muzyka-v-igrakh/">Саунд-дизайн и музыка в играх</a></li> <li><a href="/blog/testirovanie-i-optimizatsiya-igr/">Тестирование и оптимизация игр</a></li> <li><a href="/blog/tekhnologii-v-igrakh/">Технологии в играх</a></li> <li><a href="/blog/finansovye-aspekty-igrovoy-industrii/">Финансовые аспекты игровой индустрии</a></li> <li><a href="/" class="selected">Главная</a></li> <li><a href="/schools/">Школы</a></li> <li><a href="/podborki/">Подборки курсов</a></li> </ul> </div> </div> </div> </div> </main> <!-- Modal 1 --> <div class="modal modal-wide fade" id="modal-1" tabindex="-1" aria-labelledby="modal-1Label" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-help"> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> <div class="modal-help-lft"> <span>Поможем подобрать курс</span> чтобы вы получили повышение <br> или новую профессию. </div> <div class="modal-help-rht"> <div class="modal-form-title">Оставьте заявку, и мы перезвоним</div> <form method="post" enctype="multipart/form-data" class="help"> <div class="form-group"> <input type="text" placeholder="Имя" class="form-control" name="name"> </div> <div class="form-group"> <input type="text" placeholder="Телефон" class="form-control" name="tel"> </div> <div class="form-group"> <input type="text" placeholder="Email" class="form-control" name="email"> </div> <div class="form-group"> <input type="hidden" placeholder="Статья" class="form-control" name="article" value="68348"> <input type="hidden" name="link" value="https://prokursy.online/blog/pereopredelenie-iz-kataloga-shablonov-prilozheniya-django-python/"> <input type="hidden" name="ip" value="18.97.14.86"> <input type="hidden" name="sid" value="32"> </div> <div class="form-check mb-4"> <input class="form-check-input" type="checkbox" id="agree" name="agreement" checked> <label class="form-check-label" for="agree"> Я соглашаюсь на <a href="#">обработку персональных данных</a> </label> </div> <button type="submit" class="btn btn-primary btn-full">Оставить заявку</button> </form> <div class="modal-content inline_success"> <div class="modal-body"> <div class="thank-ico"> <img src="/local/templates/kimgid/img/check.svg" width="93" alt=""> </div> <p>Ваша заявка отправлена! <br>Мы скоро с Вами свяжемся!</p> </div> </div> </div> </div> </div> </div> </div> <!-- Modal 2 --> <div class="modal modal-simple fade" id="modal-2" tabindex="-1" aria-labelledby="modal-2Label" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> <div class="modal-title">Узнайте какая профессия вам подходит</div> <p class="text-center">Пройдите тест - это займет не больше 10 минут</p> <form method="post" enctype="multipart/form-data" class="profession"> <div class="form-group"> <input type="text" placeholder="Имя" class="form-control" name="name"> </div> <div class="form-group"> <input type="email" placeholder="Email" class="form-control" name="email"> </div> <div class="form-group"> <input type="hidden" placeholder="Статья" class="form-control" name="article" value="68348"> <input type="hidden" name="link" value="https://prokursy.online/blog/pereopredelenie-iz-kataloga-shablonov-prilozheniya-django-python/"> <input type="hidden" name="ip" value="18.97.14.86"> <input type="hidden" name="sid" value="32"> </div> <div class="form-check mb-4"> <input class="form-check-input" type="checkbox" id="agree1" name="agreement" checked> <label class="form-check-label" for="agree1"> Я соглашаюсь на <a href="#">обработку персональных данных</a> </label> </div> <button type="submit" class="btn btn-primary btn-full">Пройти тест</button> </form> <div class="modal-content inline_success"> <div class="modal-body"> <div class="thank-ico"> <img src="/local/templates/kimgid/img/check.svg" width="93" alt=""> </div> <p>Ваша заявка отправлена! <br>Мы скоро с Вами свяжемся!</p> </div> </div> </div> </div> </div><footer class="footer"> <div class="footer-top"> <div class="container"> <div class="row"> <div class="col-12 col-sm-4 col-md-4 col-xl-4"> <a href="/" class="logo-brand"> <span><img src="/favicon.ico" alt=""></span> ProLearnHub  </a> </div> <div class="col-6 col-sm-4 col-md-4 col-xl-4"> </div> <div class="col-6 col-sm-4 col-md-4 col-xl-4"> </div> </div> </div> </div> <div class="footer-btm"> <div class="container"> <span>© 2024</span> <span>Edtech Seo</span> <!-- Yandex.Metrika counter --> <script type="text/javascript" > (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; m[i].l=1*new Date(); for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }} k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}) (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym"); ym(99913194, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true }); </script> <noscript><div><img src="https://mc.yandex.ru/watch/99913194" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> </div> </div> </footer> <svg width="0" height="0" style="display: none;"> <symbol id="prev" viewBox="0 0 24 24" fill="none"> <path d="M15 6L9 12L15 18" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </symbol> <symbol id="next" viewBox="0 0 24 24" fill="none"> <path d="M9 6L15 12L9 18" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </symbol> </svg> </body> </html>