#16. Пользовательские теги шаблонов. Декораторы simple_tag и inclusion_tag | Уроки по Django 4

แชร์
ฝัง
  • เผยแพร่เมื่อ 24 ม.ค. 2025

ความคิดเห็น • 57

  • @dispondi8566
    @dispondi8566 ปีที่แล้ว +23

    Этот канал - это просто огромнейший клад знаний. Я смотрю уже третий плейлист и до сих пор удивляюсь. Как можно столько всего знать и так хорошо рассказывать?

  • @TheTonyMan
    @TheTonyMan 7 หลายเดือนก่อน +8

    Без этого всего можно спокойно обходится в разработке, усложнить структуру проекта можно на этапе рефакторинга кода. Так что спокойно продолжаем изучать Джанго

  • @Developer_python_
    @Developer_python_ ปีที่แล้ว +5

    I want to watch these videos forever

  • @SVladimirov14
    @SVladimirov14 8 หลายเดือนก่อน +4

    Ближе к концу видео потерял нить действий но лайк проставил, позже вернусь пересмотрю

    • @Олег-б3ц9б
      @Олег-б3ц9б 4 หลายเดือนก่อน +1

      я вообще потерялся что происходит на єкране))

  • @Олег-б3ц9б
    @Олег-б3ц9б 13 วันที่ผ่านมา +1

    после просмотра етого урока - мозг закипел...

  • @andredru4278
    @andredru4278 ปีที่แล้ว +4

    Спасибо. Уже сложнее темы начались.

  • @igorkulibaba7287
    @igorkulibaba7287 ปีที่แล้ว +2

    Спасибо, Сергей Ваши уроки отличного качества

  • @ГубкаБоб-р8ъ
    @ГубкаБоб-р8ъ ปีที่แล้ว +1

    Отличный урок, было очень интересно!

  • @ulfatkhalikov
    @ulfatkhalikov 11 หลายเดือนก่อน +1

    it's a just masterpiece! thanks!

  • @TSM_149
    @TSM_149 ปีที่แล้ว +1

    Спасибо! Like в копилку!!

  • @whosane9923
    @whosane9923 ปีที่แล้ว +4

    Погнали ...

  • @wertyozok5347
    @wertyozok5347 10 หลายเดือนก่อน +4

    Если у кого возникает ошибка TemplateSyntaxError, вот справка:
    "Сервер разработки не перезапускается автоматически. После добавления модуля templatetags необходимо перезагрузить сервер, прежде чем вы сможете использовать теги или фильтры в шаблонах."

    • @nekit7556
      @nekit7556 7 หลายเดือนก่อน

      этот коммент должен собрать тысячу лайков, спасибо!

  • @ЗНАКОМЫЙСВАРЩИК
    @ЗНАКОМЫЙСВАРЩИК ปีที่แล้ว +1

    Остановился на 8:40. дабы найти откуда продолжить.

  • @Делакруа́-ы9щ
    @Делакруа́-ы9щ ปีที่แล้ว +3

    и где тогда грань между backend и frontend разработками, если мы на стороне сервере занимаемся подсвечиванием ссылок, хотя по идее это frontend часть?

    • @selfedu_rus
      @selfedu_rus  ปีที่แล้ว +2

      шаблоны вам могут предоставлять фронтендеры, а совершенно независимого разделения все равно не получите, лучше это все знать

  • @astralvois4985
    @astralvois4985 4 หลายเดือนก่อน +1

    я выписал на отдельный лист всё, и только потом понял некоторые взаимосвязи...Одно не понял, откуда растут корни у cat_id и почему он меняется 1,2,3...Каким образом он становится cat_selected, если нигде нет взаимосвязи между этими двумя

  • @astoriy1085
    @astoriy1085 ปีที่แล้ว +4

    у меня не получается загрузить файл women/tags, он находится в тех же путях, что и на видео, выдает ошибку - TemplateSyntaxError at /
    'women_tags' is not a registered tag library. и показывает на строчку {% load women_tags %}

    • @КириллСуслов-т6к
      @КириллСуслов-т6к ปีที่แล้ว +4

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

    • @fedor-q3x
      @fedor-q3x 5 หลายเดือนก่อน

      @@КириллСуслов-т6к большое тебе спасибо

  • @SRoach
    @SRoach 6 หลายเดือนก่อน +1

    Я поставил 500й лайк

  • @obyeboshen
    @obyeboshen ปีที่แล้ว +9

    из видео не совсем понятно для чего нужен simple_tag, мы же можем с таким же успехом просто передать в шаблон нужные нам данные? если нам нужно вывести их в каком-то преобразованном виде, почему мы не можем этого сделать в функции представления?

    • @Делакруа́-ы9щ
      @Делакруа́-ы9щ ปีที่แล้ว

      просто в django запихнули все возможности, которые только можно было запихнуть, но это не значит, что вы обязаны их использовать.

    • @MistorespbMistorespb
      @MistorespbMistorespb ปีที่แล้ว

      Тоже не понятно зачем делать обработку в отдельном файле если вся логика у нас зашита в views. Скорее всего они нужны больше не для отображения данных, а для создания вспомогательных функций чтобы не заваливать ими views.

    • @MistorespbMistorespb
      @MistorespbMistorespb ปีที่แล้ว

      Но вообще, конечно, это уже сахар. Можно всегда обойтись и базовыми средствами.

  • @МаксимГалкин-э5р
    @МаксимГалкин-э5р 6 หลายเดือนก่อน +1

    начать нужно с того, что simple_tag: обрабатывает данные и возвращает строку, а inclusion_tag: обрабатывает данные и возвращает шаблон.

    • @sidjeis3315
      @sidjeis3315 11 วันที่ผ่านมา

      Это сказано в видео

  • @ibrahimoglu
    @ibrahimoglu ปีที่แล้ว +1

    👍

  • @МиланаКочесокова-о6я
    @МиланаКочесокова-о6я 9 หลายเดือนก่อน +2

    Не совсем понятно как в шаблон передаётся cat_selected отличный от 0, если, cat_id он принимает только после включающего тега show_categories т.е. только после этого тэга вызывается функция show_categories.

    • @Army_of_Earth
      @Army_of_Earth 5 หลายเดือนก่อน

      cat_selected уже доступен глобально (в любой части страницы) поскольку передается как context=data из вьюхи. Т.е. сперва обрабатывается вьюха по show_category, в которую из генерируемой ссылки попадает cat_id, а затем страница, которую рендерит вьюха, уже получив id, передает его в тег-обработчик show_categories.
      Тут запутывает то, что это из пальца высосано и служит ислючительно, чтобы "показать возможности", + имена функциям даны без оглядки на учебный процесс. Как бы... *show_category* и *show_categories* одновременно - такого в учебном материале быть не должно.

  • @АндрейКозлов-ф7д
    @АндрейКозлов-ф7д ปีที่แล้ว +1

    Добрый день. Скажите, пожалуйста, а не могли бы Вы продемонстрировать реализацию следующего алгоритма: условно, есть интернет-магазин. Структура его такова,что есть категории товаров, их подкатегории и сами товары. Как можно настроить страницу админки так, чтобы при добавлении товаров выбираешь категорию и затем, при выборе подкатегории в выпадающем списке присутствует только те подкатегории, которые относятся к уже выбранной категории. Заранее благодарю.

    • @selfedu_rus
      @selfedu_rus  ปีที่แล้ว

      Некоторый функционал будет дальше. В форме это можно сделать с помощью поля ModelChoiceField.

    • @АндрейКозлов-ф7д
      @АндрейКозлов-ф7д ปีที่แล้ว

      В форме в принципе понятно. А вот именно без использования форм такое возможно?

  • @olegkarbaev8433
    @olegkarbaev8433 ปีที่แล้ว +1

    Как сделать так что бы в названии вкладки была надпись не "Отображение по рубрикам" а был title самой рубрики (Актрисы, Певицы, Спортсменки)?

    • @selfedu_rus
      @selfedu_rus  ปีที่แล้ว +1

      параметр initial, вроде

  • @АлексейАлексеев-ц8х9т
    @АлексейАлексеев-ц8х9т ปีที่แล้ว +2

    Сергей, правильно ли я понимаю, что {{ include }} имеет почти тот же функционал, что и включающие теги, с тем лишь отличием, что во включающие теги можно передавать ещё и данные, при их вызове?

    • @selfedu_rus
      @selfedu_rus  ปีที่แล้ว +2

      Включающие теги, как правило, используются, когда на программном уровне нужно сформировать некие данные, которые затем передаются и отображаются в шаблоне. А Include, когда есть фрагмент шаблона и его просто нужно отобразить в нескольких местах или нескольких шаблонах.

    • @АлексейАлексеев-ц8х9т
      @АлексейАлексеев-ц8х9т ปีที่แล้ว

      @@selfedu_rus да, это я понимаю, но я про то, что в include шаблоне, можно подключить и вызвать простой пользовательский тег с данными и это будет аналогично пользовательскому включающему тегу (и там и там шаблоны с внешними данными), разница только в том, что в пользовательский включающий тег можно передать дополнительные данные в виде аргумента, при вызове этого шаблона, а include вызывается без аргументов

    • @selfedu_rus
      @selfedu_rus  ปีที่แล้ว +2

      технически можно, просто городить такой огород в связке с простым тегом??? мне кажется, тут все очевидно, делаем то, что проще, а проще, как правило, создать включающий тег и понятнее для программиста

    • @obyeboshen
      @obyeboshen ปีที่แล้ว +1

      а если еще учитывать, что в шаблоне, подключаемом через include, будут доступны все переменные из основного шаблона, то нам даже не придется заморачиваться с простыми тегами
      в общем совсем эти теги какие-то бесполезные

    • @Делакруа́-ы9щ
      @Делакруа́-ы9щ ปีที่แล้ว

      @@АлексейАлексеев-ц8х9т если заинклюдить какой то шаблон , то для него нужно будет прописать и маршрут и обработчик, через который передаются параметры шаблону.

  • @oxygenoxygeno
    @oxygenoxygeno ปีที่แล้ว +1

    Cat_selected всегда равен 0, я правильно понимаю??

    • @selfedu_rus
      @selfedu_rus  ปีที่แล้ว

      для категорий (рубрик) другой

  • @VitaliiKholmukhamedov-z6q
    @VitaliiKholmukhamedov-z6q ปีที่แล้ว +1

    А почему cat_selected = 0 а не None? Есть разница?

    • @selfedu_rus
      @selfedu_rus  ปีที่แล้ว

      Смотря какой смысл в этот параметр вкладывает программист. Далее, я полагаю, если cat_selected = None, то ни одну рубрику не выделять.

    • @Делакруа́-ы9щ
      @Делакруа́-ы9щ ปีที่แล้ว +1

      @@selfedu_rus для единого подхода можно было бы и cats_db передать в функцию-обработчик и далее включающему тегу, а не получать эту переменную через import women.views as views

  • @Alex18Rus
    @Alex18Rus 9 หลายเดือนก่อน +1

    около часа пытался понять, где я что сделал не так или где я что пропустил. Тупой, получается. скопирую все с гитхаба и поползу дальше)

  • @Developer_python_
    @Developer_python_ ปีที่แล้ว

    why must templatetags have an init-file? It works without init-file

  • @Делакруа́-ы9щ
    @Делакруа́-ы9щ ปีที่แล้ว +1

    Если вдруг кто то решить, что лучше подсвечивать ссылки 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;
    }

  • @danielfessow
    @danielfessow 8 หลายเดือนก่อน +1

    Сложный урок, не запомнил половину ._.

  • @igorratnik2357
    @igorratnik2357 ปีที่แล้ว +1

    За строчку "class=selected" в шаблоне "list_categories.html", в файле стилей отвечает вот эта строка ".left-chapters ul li.selected {color: #0059b2; }" Цвет можно поменять, подсвечиваться будет тем цветом, который будет прописан в данной строке