Купи кирзачи тогда... Речь изначально шла про удобство. 10-ти баксовые с алика - смерть для ног. В моих Skechers стелька memory foam стоит дороже. Это вообще какой-то мазохизм тут - обсуждать какое-то дерьмо за копейки. Вот реально, не для сказок на форуме - попробуйте хоть раз нормальную обувь, одежду... можкт тогда перестанете думать что отличаются только этикеткой.
Спросил жену - что ей больше нравится - Аллегро или ВБ - начала горячо защищать ягодку - как раз из за возможности заказать мешок фигни и померить и купить только то что понравилось. Аопросил показать что она купила таким образом и ности - оказалось - НИ-ЧЕ-ГО!!! 🤣 Все или в мусорке или пылится. А ходит в TF, Benethon, Levi's etc... Сказал, что в аутлеты больше не будеи ездить - заказывай на ВБ - не понравилсяь идея..
Завис, пытаясь понять смысл фразы... В Витебской области какоие-то свои ПДД, в которых сплошная слева имеет другой смысл? Может, все таки откроем ПДД и прочитаем?
Вообще я конечно уже устал от бардака на белорусских дорогах - какое-то бессмысленное броуновское движение. Пообщался с друзьями тут - у всех такое же мнение как у меня об гостях с номерами РФ - ПДД вообще не для них похоже. Стоит можина под знаком Остановка запрещена, на полосе разгона/вьезда на кольцевую, на паркинге сразу на 2-х местах, на местах для инвалидов - 90% это будут гости...
Уже дни до отьезда считаю
знаешь, что такое оксюморон? 😀
суть в том чтобы разделить обработку в шаблоне и бэк. Я вижу файл с расширением .php и предполагаю что там что-то делается. если это .html/.tpl - я четко понимаю предназначение. В пайтоне редко используется tpl, а так да - вполне можно использовать для шаблонов - так даже лучше.
то есть ты имел доступ к моему репо и теперь на голубом глазу набрасываешь про джанго? Мне доатсточно этого для понимания твоего уровня... даже не вижу смысла с тобой дальше что-то обсуждать.
но комментс. Может ты все таки бы сначала попытался понять остальные принципы, прежде чем набрасывать? впрочем мне - неинтересно. Далеее - игнор твоего бреда.
Для регистрации тебе нужен бессрочный контракт на жилье - это на усмотрение собственника, с кем его подписывать. А два мужика там будут или две тетки - неважно.
на одну майку из настоящего хлопка уйдет сырья на полтора доллара и на 15 центов - если вискоза.В Pepco у нас тоже есть майки по 3 доллара, но они хоть не притовряются 😀
Юникло мне кстати не зашел - синтетика, но дизайн да, гуд.Кроссы турецкие абибасы развалились через полгода - продавилась подошва.Оригинал ношу уже 5-й год, все жду когда из выкинуть можно будет а они никак не сдаются. В Витебске зашел в магазин Adidas - из 20 моделей с натяжкой могу признать что моделей 5 были оригинальные, остальные - явное фуфло.
Из китая пару раз заказывал ботинки - ну в офисе сидеть или в магаз сбегать норм, с нормальной хотя бы Коламбиа даже рядом не стояли. Мне мои ноги дороги)
base.html<!DOCTYPE html><html lang="ru"> <head> {% include "head.html" %} </head> <body> {% include "navbar-main.html" %} <main class="container-fluid py-4"> {% block content %}{% endblock %} </main>все {% include "footer.html" %} {% include "cookie-consent.html" %} <div class="theme-toggle dropdown dropup"> <button class="btn btn-primary dropdown-toggle d-flex align-items-center" id="theme-toggle-button" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-label="Toggle theme" > <i class="bi bi-circle-half"></i> </button> <ul class="dropdown-menu dropdown-menu-end shadow" aria-labelledby="theme-toggle-button"> <li> <button type="button" class="dropdown-item d-flex align-items-center gap-2" data-bs-theme-value="light"> <i class="bi bi-sun-fill"></i> Светлая </button> </li> <li> <button type="button" class="dropdown-item d-flex align-items-center gap-2" data-bs-theme-value="dark"> <i class="bi bi-moon-stars-fill"></i> Темная </button> </li> <li> <button type="button" class="dropdown-item d-flex align-items-center gap-2" data-bs-theme-value="auto"> <i class="bi bi-circle-half"></i> Авто </button> </li> </ul> </div> <script> (function () { const csrfToken = "{{ csrf_token | default('') }}"; if (!csrfToken) return; const forms = document.querySelectorAll("form"); forms.forEach((form) => { if (form.querySelector('input[name="csrf_token"]')) return; const input = document.createElement("input"); input.type = "hidden"; input.name = "csrf_token"; input.value = csrfToken; form.appendChild(input); }); })(); </script> <script src="/static/js/cookie-consent.js"></script> <script src="/static/js/theme-toggle.js?v={{ release_version }}"></script> {% block scripts %}{% endblock %} </body></html>
тут есть только то, что будет на любой странице - мне не нужно каждый раз это переподключать - стили, скрипты, тот же бутстрап...Дальше я создаю, например страницу для статей, блог. Аналог твоего RSS.
{% extends "base.html" %}{% block head %} {{ super() }} <!-- Schema.org JSON-LD разметка для SEO --> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "SoftwareApplication", "name": "LearnService - Платформа для обучения", "description": "Платформа для эффективного обучения с расписанием занятий, интерактивными тестами и поддержкой ИИ-наставника", "applicationCategory": "EducationalApplication", "offers": { "@type": "Offer", "price": "0", "priceCurrency": "RUB" }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.8", "ratingCount": "100" } } </script>{% endblock %}{% block content %} <section class="page-hero pb-1">
Ты это уже реализовал примерно также. Для кастомной страницы я наследуюсь от базового шаблона и просто меняю нужные мне блоки - header, content, в которых и происходит вся магия - так же как у тебя.Но для того чтобы подключить блок стилей или скриптов мне не нужно регистриовать компонент - у меня уже есть хедер или футер. Я или заменяю его или наследуюсь и расширяя.то есть просто создаю новый шаблон head.html, в котором подключаю стили.
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>{{ page_title or "Главная" }}</title><script src="/static/js/theme-init.js?v={{ release_version }}"></script><link rel="icon" type="image/x-icon" href="/static/favicon.ico" /><link rel="alternate icon" type="image/svg+xml" href="/static/favicon.svg" /><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFebRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css" /><link rel="stylesheet" href="/static/css/web.css?v={{ release_version }}" /><link rel="stylesheet" href="/static/css/theme-toggle.css?v={{ release_version }}" /><link rel="stylesheet" href="/static/css/cookie-consent.css?v={{ release_version }}" /><!-- Google tag (gtag.js) --><script async src="https://www.googletagmanager.com/gtag/js?id=G-P"></script><script src="/static/js/analytics.js?v={{ release_version }}"></script><script src="/static/js/switch-language.js?v={{ release_version }}"></script>
все! никакой код писать ненадо пользователю, просто меняю путь к стилям, как ты говоришь, если хочу прикрутить новогодний.Просто и понятно даже новичку - 15 минут прочитать про шаблонизатор и начать его использовать. Гибкость - абсолютная. от кода - полная изоляция.Но на самом деле это спор так, чисто убить свободное время. Если проект получит развитие, я в 99% просто уйду на фронте на Реакт. Поэтому я всегда больше делаю упор на API.
Но как практика - снимаю шляпу, ты молодец. Мне вот лень так глубоко лезть и тратить время на свой шаблонизатор
Это все понятно. Но я вижу избыточное решение, которое ничего не дает в плане функционала. Да, так можно, но зачем? Зачем мне отдельно прописывать компонент, который и так отлично работает в хтмл и в шаблоны подключается обычным тегом, без дополнительного класса-прослойки? шаблонизатор - понимаю, наследования, директивы-фильтры - тут все супер. Стили - переусложнение, имхо.
Я почти уверен что ты и сам к этому придешь