Этот канал - это просто огромнейший клад знаний. Я смотрю уже третий плейлист и до сих пор удивляюсь. Как можно столько всего знать и так хорошо рассказывать?
Без этого всего можно спокойно обходится в разработке, усложнить структуру проекта можно на этапе рефакторинга кода. Так что спокойно продолжаем изучать Джанго
Если у кого возникает ошибка TemplateSyntaxError, вот справка: "Сервер разработки не перезапускается автоматически. После добавления модуля templatetags необходимо перезагрузить сервер, прежде чем вы сможете использовать теги или фильтры в шаблонах."
я выписал на отдельный лист всё, и только потом понял некоторые взаимосвязи...Одно не понял, откуда растут корни у cat_id и почему он меняется 1,2,3...Каким образом он становится cat_selected, если нигде нет взаимосвязи между этими двумя
у меня не получается загрузить файл women/tags, он находится в тех же путях, что и на видео, выдает ошибку - TemplateSyntaxError at / 'women_tags' is not a registered tag library. и показывает на строчку {% load women_tags %}
из видео не совсем понятно для чего нужен simple_tag, мы же можем с таким же успехом просто передать в шаблон нужные нам данные? если нам нужно вывести их в каком-то преобразованном виде, почему мы не можем этого сделать в функции представления?
Тоже не понятно зачем делать обработку в отдельном файле если вся логика у нас зашита в views. Скорее всего они нужны больше не для отображения данных, а для создания вспомогательных функций чтобы не заваливать ими views.
Не совсем понятно как в шаблон передаётся cat_selected отличный от 0, если, cat_id он принимает только после включающего тега show_categories т.е. только после этого тэга вызывается функция show_categories.
cat_selected уже доступен глобально (в любой части страницы) поскольку передается как context=data из вьюхи. Т.е. сперва обрабатывается вьюха по show_category, в которую из генерируемой ссылки попадает cat_id, а затем страница, которую рендерит вьюха, уже получив id, передает его в тег-обработчик show_categories. Тут запутывает то, что это из пальца высосано и служит ислючительно, чтобы "показать возможности", + имена функциям даны без оглядки на учебный процесс. Как бы... *show_category* и *show_categories* одновременно - такого в учебном материале быть не должно.
Добрый день. Скажите, пожалуйста, а не могли бы Вы продемонстрировать реализацию следующего алгоритма: условно, есть интернет-магазин. Структура его такова,что есть категории товаров, их подкатегории и сами товары. Как можно настроить страницу админки так, чтобы при добавлении товаров выбираешь категорию и затем, при выборе подкатегории в выпадающем списке присутствует только те подкатегории, которые относятся к уже выбранной категории. Заранее благодарю.
Сергей, правильно ли я понимаю, что {{ include }} имеет почти тот же функционал, что и включающие теги, с тем лишь отличием, что во включающие теги можно передавать ещё и данные, при их вызове?
Включающие теги, как правило, используются, когда на программном уровне нужно сформировать некие данные, которые затем передаются и отображаются в шаблоне. А Include, когда есть фрагмент шаблона и его просто нужно отобразить в нескольких местах или нескольких шаблонах.
@@selfedu_rus да, это я понимаю, но я про то, что в include шаблоне, можно подключить и вызвать простой пользовательский тег с данными и это будет аналогично пользовательскому включающему тегу (и там и там шаблоны с внешними данными), разница только в том, что в пользовательский включающий тег можно передать дополнительные данные в виде аргумента, при вызове этого шаблона, а include вызывается без аргументов
технически можно, просто городить такой огород в связке с простым тегом??? мне кажется, тут все очевидно, делаем то, что проще, а проще, как правило, создать включающий тег и понятнее для программиста
а если еще учитывать, что в шаблоне, подключаемом через include, будут доступны все переменные из основного шаблона, то нам даже не придется заморачиваться с простыми тегами в общем совсем эти теги какие-то бесполезные
@@АлексейАлексеев-ц8х9т если заинклюдить какой то шаблон , то для него нужно будет прописать и маршрут и обработчик, через который передаются параметры шаблону.
@@selfedu_rus для единого подхода можно было бы и cats_db передать в функцию-обработчик и далее включающему тегу, а не получать эту переменную через import women.views as views
Если вдруг кто то решить, что лучше подсвечивать ссылки JS-ом, то вот код)) const doc = window.document; const links = doc.querySelectorAll("a"); const linksCount = links.length; const currentURL = doc.URL; for (let i = 0; i < linksCount; i++) { let linkURL = links[i].href; if (currentURL.endsWith(linkURL)) { links[i].classList.add("active"); } } Ну и соответственно css .active{ color: #0059b2; pointer-events: none; } a { color: #444; text-decoration: none; } a:hover{ color: #CC0000; }
За строчку "class=selected" в шаблоне "list_categories.html", в файле стилей отвечает вот эта строка ".left-chapters ul li.selected {color: #0059b2; }" Цвет можно поменять, подсвечиваться будет тем цветом, который будет прописан в данной строке
Этот канал - это просто огромнейший клад знаний. Я смотрю уже третий плейлист и до сих пор удивляюсь. Как можно столько всего знать и так хорошо рассказывать?
Без этого всего можно спокойно обходится в разработке, усложнить структуру проекта можно на этапе рефакторинга кода. Так что спокойно продолжаем изучать Джанго
I want to watch these videos forever
Ближе к концу видео потерял нить действий но лайк проставил, позже вернусь пересмотрю
я вообще потерялся что происходит на єкране))
после просмотра етого урока - мозг закипел...
Спасибо. Уже сложнее темы начались.
Спасибо, Сергей Ваши уроки отличного качества
Отличный урок, было очень интересно!
it's a just masterpiece! thanks!
Спасибо! Like в копилку!!
Погнали ...
Если у кого возникает ошибка TemplateSyntaxError, вот справка:
"Сервер разработки не перезапускается автоматически. После добавления модуля templatetags необходимо перезагрузить сервер, прежде чем вы сможете использовать теги или фильтры в шаблонах."
этот коммент должен собрать тысячу лайков, спасибо!
Остановился на 8:40. дабы найти откуда продолжить.
и где тогда грань между backend и frontend разработками, если мы на стороне сервере занимаемся подсвечиванием ссылок, хотя по идее это frontend часть?
шаблоны вам могут предоставлять фронтендеры, а совершенно независимого разделения все равно не получите, лучше это все знать
я выписал на отдельный лист всё, и только потом понял некоторые взаимосвязи...Одно не понял, откуда растут корни у cat_id и почему он меняется 1,2,3...Каким образом он становится cat_selected, если нигде нет взаимосвязи между этими двумя
у меня не получается загрузить файл women/tags, он находится в тех же путях, что и на видео, выдает ошибку - TemplateSyntaxError at /
'women_tags' is not a registered tag library. и показывает на строчку {% load women_tags %}
В моем случае, ошибка была в названии папки templatetags. После исправления опечатки все заработало
@@КириллСуслов-т6к большое тебе спасибо
Я поставил 500й лайк
из видео не совсем понятно для чего нужен simple_tag, мы же можем с таким же успехом просто передать в шаблон нужные нам данные? если нам нужно вывести их в каком-то преобразованном виде, почему мы не можем этого сделать в функции представления?
просто в django запихнули все возможности, которые только можно было запихнуть, но это не значит, что вы обязаны их использовать.
Тоже не понятно зачем делать обработку в отдельном файле если вся логика у нас зашита в views. Скорее всего они нужны больше не для отображения данных, а для создания вспомогательных функций чтобы не заваливать ими views.
Но вообще, конечно, это уже сахар. Можно всегда обойтись и базовыми средствами.
начать нужно с того, что simple_tag: обрабатывает данные и возвращает строку, а inclusion_tag: обрабатывает данные и возвращает шаблон.
Это сказано в видео
👍
Не совсем понятно как в шаблон передаётся cat_selected отличный от 0, если, cat_id он принимает только после включающего тега show_categories т.е. только после этого тэга вызывается функция show_categories.
cat_selected уже доступен глобально (в любой части страницы) поскольку передается как context=data из вьюхи. Т.е. сперва обрабатывается вьюха по show_category, в которую из генерируемой ссылки попадает cat_id, а затем страница, которую рендерит вьюха, уже получив id, передает его в тег-обработчик show_categories.
Тут запутывает то, что это из пальца высосано и служит ислючительно, чтобы "показать возможности", + имена функциям даны без оглядки на учебный процесс. Как бы... *show_category* и *show_categories* одновременно - такого в учебном материале быть не должно.
Добрый день. Скажите, пожалуйста, а не могли бы Вы продемонстрировать реализацию следующего алгоритма: условно, есть интернет-магазин. Структура его такова,что есть категории товаров, их подкатегории и сами товары. Как можно настроить страницу админки так, чтобы при добавлении товаров выбираешь категорию и затем, при выборе подкатегории в выпадающем списке присутствует только те подкатегории, которые относятся к уже выбранной категории. Заранее благодарю.
Некоторый функционал будет дальше. В форме это можно сделать с помощью поля ModelChoiceField.
В форме в принципе понятно. А вот именно без использования форм такое возможно?
Как сделать так что бы в названии вкладки была надпись не "Отображение по рубрикам" а был title самой рубрики (Актрисы, Певицы, Спортсменки)?
параметр initial, вроде
Сергей, правильно ли я понимаю, что {{ include }} имеет почти тот же функционал, что и включающие теги, с тем лишь отличием, что во включающие теги можно передавать ещё и данные, при их вызове?
Включающие теги, как правило, используются, когда на программном уровне нужно сформировать некие данные, которые затем передаются и отображаются в шаблоне. А Include, когда есть фрагмент шаблона и его просто нужно отобразить в нескольких местах или нескольких шаблонах.
@@selfedu_rus да, это я понимаю, но я про то, что в include шаблоне, можно подключить и вызвать простой пользовательский тег с данными и это будет аналогично пользовательскому включающему тегу (и там и там шаблоны с внешними данными), разница только в том, что в пользовательский включающий тег можно передать дополнительные данные в виде аргумента, при вызове этого шаблона, а include вызывается без аргументов
технически можно, просто городить такой огород в связке с простым тегом??? мне кажется, тут все очевидно, делаем то, что проще, а проще, как правило, создать включающий тег и понятнее для программиста
а если еще учитывать, что в шаблоне, подключаемом через include, будут доступны все переменные из основного шаблона, то нам даже не придется заморачиваться с простыми тегами
в общем совсем эти теги какие-то бесполезные
@@АлексейАлексеев-ц8х9т если заинклюдить какой то шаблон , то для него нужно будет прописать и маршрут и обработчик, через который передаются параметры шаблону.
Cat_selected всегда равен 0, я правильно понимаю??
для категорий (рубрик) другой
А почему cat_selected = 0 а не None? Есть разница?
Смотря какой смысл в этот параметр вкладывает программист. Далее, я полагаю, если cat_selected = None, то ни одну рубрику не выделять.
@@selfedu_rus для единого подхода можно было бы и cats_db передать в функцию-обработчик и далее включающему тегу, а не получать эту переменную через import women.views as views
около часа пытался понять, где я что сделал не так или где я что пропустил. Тупой, получается. скопирую все с гитхаба и поползу дальше)
why must templatetags have an init-file? It works without init-file
Because templates tag is a module, probably
@@mrduckvc but it works in any case
@@Developer_python_ if it's work, it doesn't mean that it is correct
@@mrduckvc what about KISS?
@@Developer_python_ nice band
Если вдруг кто то решить, что лучше подсвечивать ссылки JS-ом, то вот код))
const doc = window.document;
const links = doc.querySelectorAll("a");
const linksCount = links.length;
const currentURL = doc.URL;
for (let i = 0; i < linksCount; i++) {
let linkURL = links[i].href;
if (currentURL.endsWith(linkURL)) {
links[i].classList.add("active");
}
}
Ну и соответственно css
.active{
color: #0059b2;
pointer-events: none;
}
a {
color: #444;
text-decoration: none;
}
a:hover{
color: #CC0000;
}
Сложный урок, не запомнил половину ._.
За строчку "class=selected" в шаблоне "list_categories.html", в файле стилей отвечает вот эта строка ".left-chapters ul li.selected {color: #0059b2; }" Цвет можно поменять, подсвечиваться будет тем цветом, который будет прописан в данной строке