#15. Классы представлений: ListView, DetailView, CreateView | Django уроки

Практический курс по Django: stepik.org/a/183363
Django урок 15. Что такое классы представлений (Class-Based Views - CBV), как создаются и подключаются к маршрутам (метод as_view()). Атрибуты: model, template_name, context_object_name, extra_context, allow_empty. Методы: get_context_data(), get_queryset(). Атрибуты класса DetailView: slug_url_kwarg, pk_url_kwarg. Атрибут класса CreateView: form_class и success_url. Функция reverse_lazy() и ее отличие от reverse().
Телеграм-канал: t.me/django_selfedu
Инфо-сайт: proproprogs.ru/django
lesson-15-coolsite.zip: github.com/selfedu-rus/django...
Список базовых классов: djbook.ru/rel1.9/ref/class-ba...
Русскоязычная документация по Django 3: djbook.ru/rel3.0/
Официальный сайт по Django: www.djangoproject.com

Пікірлер: 202

  • @MsTaburet
    @MsTaburet Жыл бұрын

    Картинки всё горячее с каждым уроком. Смотрю дальше)

  • @AJIagguH
    @AJIagguH3 жыл бұрын

    Пытаюсь предугадать ваши действия, пишу код сам и проверяю по вам. Когда получается, радости полные штаны)

  • @vladimirsmolkotin2619
    @vladimirsmolkotin2619 Жыл бұрын

    Урок просто блестящий. В одном уроке я столько своих вопросов закрыл, что нет слов. Удачи автору!

  • @user-de9eb1bp4w
    @user-de9eb1bp4w2 жыл бұрын

    Насколько грамотная речь! И материал, и подача. Мне все очень понравилось

  • @rosrostovskiy2631
    @rosrostovskiy2631 Жыл бұрын

    Чувствую, что к 26 уроку фотографии уже нужно будет цензурить😄

  • @tihunvolkov9288

    @tihunvolkov9288

    10 ай бұрын

    А ты думал для чего там галочка не публичные)

  • @wrestler91100
    @wrestler91100 Жыл бұрын

    Из этого занятия стало понятно, что автор не выполнил домашнее задание по отображению главного меню через включенный тег))

  • @citricmint_forstudy4608
    @citricmint_forstudy4608 Жыл бұрын

    я думала мы вместо allow_empty = False будем ручками прописывать условие и рейзить Http404, а оказывается и для этого свой аттрибут есть)) мне прям даже как то неудобно, что джанго за нас все делает 😀

  • @igorkulibaba7287
    @igorkulibaba72873 жыл бұрын

    Спасибо очень доступно, то что нравится на вашем канале!

  • @friend1cat
    @friend1cat3 жыл бұрын

    Спасибо, Сергей! Сегодня займусь Вашим курсом по ООП. Все отлично.

  • @user-zw3om5vi8h
    @user-zw3om5vi8h3 жыл бұрын

    Спасибо, Сергей, за твои уроки!

  • @user-sd2ep4do4c
    @user-sd2ep4do4c Жыл бұрын

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

  • @isded1681
    @isded16812 жыл бұрын

    На много упрощает код. Благодарю за видеоматериал!

  • @donfedor007
    @donfedor0073 жыл бұрын

    Спасибо Вам за урок! Очень интересная тема! Теперь главное правильно выбирать класс родитель) Круто!

  • @Radag0nn563
    @Radag0nn5633 жыл бұрын

    Спасибо Вам за такую полезную информацию, Вы спасли мой проект))

  • @dmitryzagorevskiy507
    @dmitryzagorevskiy5072 жыл бұрын

    Супер! Спасибо! Это очень существенная особенность Django!

  • @user-sh9re6xg9b
    @user-sh9re6xg9b Жыл бұрын

    Спасибо огромное!! Так рассказывать это дар! Спасибо!

  • @Korolex1
    @Korolex1 Жыл бұрын

    Как всегда, видеоурок на высоте!

  • @x-user-agent
    @x-user-agent2 жыл бұрын

    оооо... супер👍 в основном ради class based views смотрел этот курс

  • @shettalker4593
    @shettalker45933 жыл бұрын

    Я посмотрел только 6 минуту, но уже понял что ты топовый програмист, подписка и лайк, удачи в продвижении

  • @kirilldyatko3978
    @kirilldyatko39782 жыл бұрын

    Большое спасибо! По документации не очень понятно, как оно всё работает, теперь документацию можно смотреть более осознанно

  • @ivanmain9659
    @ivanmain96592 жыл бұрын

    Автор - ты лучший!

  • @bernardsoul8936
    @bernardsoul8936 Жыл бұрын

    На этом примере понял, как удобно использовать Templatetags. Так как я ранее менюшку сайта вынес в отдельный тег, то сейчас не нужно постоянно ее прописывать

  • @uladzislawchyrets
    @uladzislawchyrets3 жыл бұрын

    Спасибо за урок

  • @exe88cution
    @exe88cution2 жыл бұрын

    Красиво, спасибо огромное

  • @artur.tokranov
    @artur.tokranov2 жыл бұрын

    Учитель от Бога

  • @citricmint_forstudy4608
    @citricmint_forstudy4608 Жыл бұрын

    спасибо за такие замечательные уроки. Смотрю этот курс и параллельно документацию на русском языке, очень удобный комплект для обучения получается) потом уже если углубляться, не так страшно будет)

  • @passionarij
    @passionarij2 жыл бұрын

    Круто! Отдельное спасибо за фотки барышень)

  • @Alichok59
    @Alichok592 жыл бұрын

    Мой маленкий совет для всех сделать кнопу "админ" в меню, чтобы в процессе содания сайта быстро переходить на страницу администратора!) просто настроить для нее url и написать функцию с содержимым "pass"

  • @fallennephalem1258

    @fallennephalem1258

    Жыл бұрын

    а потом менять фронтенд, когда будешь её удалять

  • @PavelNebo

    @PavelNebo

    Жыл бұрын

    разве написать admin в адресе долго ?

  • @user-qn6pq1dk5h
    @user-qn6pq1dk5h Жыл бұрын

    Решил вернуться к этой теме, на своём проекте реализовать DetailView. Долго мучался с FieldError. Оказалось дело в том, что у меня в модели по-другому поле со слагом называется. Итого решение - надо переопределить параметр slug_field - присвоить ему название слага в моей модели

  • @user-ce2vy8lh1j
    @user-ce2vy8lh1j Жыл бұрын

    Thank you, sir!

  • @mnogokotin
    @mnogokotin2 жыл бұрын

    спасибо за видос )

  • @oosmk4203
    @oosmk42032 жыл бұрын

    мужык, ты лучший

  • @user-il4fn2di5u
    @user-il4fn2di5u Жыл бұрын

    Вот это упростили конструкцию так упростили )))) было 3 строчки кода стало 23 ))))))))

  • @yarik83men51
    @yarik83men513 жыл бұрын

    Спасибо

  • @LukasFeinberg
    @LukasFeinberg Жыл бұрын

    25:43 А если мы сделали верхнее меню через "inclusion_tag", как автор канала советовал сделать как "Домашнее Задание", то меню будет видно )

  • @SectorGm
    @SectorGm3 жыл бұрын

    Спасибо!

  • @2000Vladik
    @2000Vladik3 жыл бұрын

    Респект!!!

  • @sainco3036
    @sainco30363 жыл бұрын

    Спасибо.

  • @user-fw3on5ih3q
    @user-fw3on5ih3q Жыл бұрын

    нейминг божественный конечно

  • @user-yn5ox2zu1m
    @user-yn5ox2zu1m10 ай бұрын

    На 7:04 сказано, что можно передавать только неизменяемые данные в extra_context, но такой код сработал (использую Django 4. Возможно, в третьей версии нельзя было): class Mixin(): menu = [{'title':'статьи','url':'list'}, {'title':'новая','url':'new'}, {'title':'инфо','url':'about'}, {'title':'тема','url':'theme'}, {'title':'вход','url':'login'} ] context = { 'menu': menu, 'style': styles[0] } class List_page(Mixin, ListView): '''ОТОБРАЖЕНИЕ СПИСКА СТАТЕЙ''' model = Page context_object_name = 'list' template_name = 'pager/list.html' extra_context = Mixin.context Закинул меню таким же списком в словарь context миксина, а потом, наследовав (Mixin, ListView), передал в extra_context этот список Mixin.menu, и всё заработало в таком простом формате. p.s. спасибо за уроки, Сергей!

  • @selfedu_rus

    @selfedu_rus

    10 ай бұрын

    Да, я здесь не совсем верно сказал, в extra_context можно прописывать только те данные, которые известны (существуют) на момент описания класса.

  • @user-qn6pq1dk5h
    @user-qn6pq1dk5h Жыл бұрын

    Ох же, сложновато! Буду разбираться, но смогу :)

  • @alicelews2282
    @alicelews22822 жыл бұрын

    Спасибо! Надеюсь, у вас появятся видео по переводу сайта на другие языки

  • @vladkrolik2700

    @vladkrolik2700

    2 жыл бұрын

    ??? в настрой поставить другой язык и все вроде

  • @stevejops007

    @stevejops007

    Жыл бұрын

    @@vladkrolik2700 нууу почти...=)

  • @vladkrolik2700

    @vladkrolik2700

    Жыл бұрын

    @@stevejops007 Фамилия как у меня )

  • @grybook4205
    @grybook4205 Жыл бұрын

    Можно добавить в class show_post функцию def get_queryset(self): return Women.objects.filter(is_published=True) если без нее, то можно открыть не опубликованный пост по слагу в тестирование переиграл :)

  • @vanillawire1717

    @vanillawire1717

    Жыл бұрын

    Мне кажется лучше использовать get_object(self): def get_object(self): """Выбор нужной записи из таблицы 'Women'""" return get_object_or_404(Women, slug=self.kwargs['post_slug'], is_published=True) Так как я использовал ваш вариант и пытался просто filter() заменить на get() и выдавало ошибку, что оно находит не 1, а сразу 5 записей, что натолкнуло меня на мысль, что нужно туда добавить в условие проверку по slug(но оставить использовать filter()) или найти в документации Django подходящую функцию, для получения одной записи(как я показал в самом начале).

  • @user-po4xo8rv2e
    @user-po4xo8rv2e3 жыл бұрын

    Good man)

  • @artur.tokranov
    @artur.tokranov2 жыл бұрын

    Я пересматриваю уроки, спасибо! Хотя уже работаю программистом

  • @kohan______
    @kohan______ Жыл бұрын

    Не совсем понятен механизм сохранения формы и добавление поста в базу данных. Не могу понять в какой момент, почему и откуда Джанго знает о том, что нужно добавить данные в базу данных в классе AddPage. Был бы благодарен, если бы Вы мне смогли обьяснить!)

  • @snazh5046
    @snazh504611 ай бұрын

    мне кажется в 17:38 для отображения заголовка лучше использовать f строку(context['title'] = f"Category: {context['publications'][0].cat}")

  • @nnutipa
    @nnutipa3 жыл бұрын

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

  • @selfedu_rus

    @selfedu_rus

    3 жыл бұрын

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

  • @user-ww8sf7zs6c
    @user-ww8sf7zs6c Жыл бұрын

    Привет! Спасибо за уроки! Один момент я написал extra_context и передал туда меню и у меня все сработало без функции Def get_context_data

  • @user-zl5sp9yh1n

    @user-zl5sp9yh1n

    Жыл бұрын

    Потому что в данном случае у нас меню это статичная переменная, но если она будет меняться динамически, в зависимости от того какая страница у нас представлена то что-то пойдет не так.(допустим меню генерирует отдельная функция по объекту который передается в нее из класса или что-нибудь подобное).

  • @Anonim-im6ln
    @Anonim-im6ln2 жыл бұрын

    Супер!) Дякую:)

  • @walkin-det
    @walkin-det Жыл бұрын

    Очень круто и профессионально. Мне очень нравится. Жаль только что сайт закрыт. Не понимаю, так мало времени прошло

  • @vadimkolbik
    @vadimkolbik Жыл бұрын

    кстати, я вот сижу и думаю, а почему у меня меню отображается? Потом вспомнил, что мы делали свой тег для категорий и для меню по желанию. Удобно

  • @Magpie2123
    @Magpie21233 жыл бұрын

    Привет! Все супер, но у меня вопрос: на 24й минуте строка 88 context['title'] = context['post'] по моему она сработала только потому, что у класса был определен метод __str__, не будет ли более правильно написать context['title'] = context['post'].title? Какое Ваше мнение?

  • @selfedu_rus

    @selfedu_rus

    3 жыл бұрын

    Да, совершенно верно! Вы первый, кто это отметил! Наверное, лучше все-таки явно указывать title, чтобы избежать возможных ошибок, здесь я с Вами полностью согласен.

  • @crazyhowling2203

    @crazyhowling2203

    3 жыл бұрын

    @@selfedu_rus Думаю если ещё можно, то стоит отметить это в описании видоса

  • @dmitryzagorevskiy507

    @dmitryzagorevskiy507

    2 жыл бұрын

    Приветствую! Отличное уточнение, только не tYtle, а title. Исправьте, пожалуйста, чтобы кто-то не повторил опечатку. Спасибо!

  • @Magpie2123

    @Magpie2123

    2 жыл бұрын

    @@dmitryzagorevskiy507 Спасибо, попоавил.

  • @user-ew4xn7fk5j
    @user-ew4xn7fk5j2 жыл бұрын

    Спасибо за уроки, самые лучшие в KZread ! У меня вопрос: Вы показали , как сделать автоматическое заполнение поля slug в меню-админа, а как сделать это через поле формы (где ее добавляет пользователь через CreateView... -.)?

  • @selfedu_rus

    @selfedu_rus

    2 жыл бұрын

    средствами JS, можно самостоятельно написать, можно найти фрагмент на просторах Интернета

  • @_sergeevich5827
    @_sergeevich58272 жыл бұрын

    Отлично !!!

  • @lil_fritch
    @lil_fritch Жыл бұрын

    def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) name = Category.objects.get(slug=self.kwargs['category_slug']).name context['title'] = f'Категория - {name}' return context Так тоже работает вывод названия категории в заголовок

  • @garrywood9195
    @garrywood9195 Жыл бұрын

    Спасибо за превосходное объяснение. Это лучшее, что я находил. Есть вопрос по этим классам. Во все классы мы добавляли динамический контекст. Можно объявить базовый класс с этими методами и далее наследоваться в дальнейшем? Или я забегаю вперед?

  • @selfedu_rus

    @selfedu_rus

    Жыл бұрын

    да, конечно, весь спектр возможностей ООП здесь можно применять

  • @alex_satan
    @alex_satan2 жыл бұрын

    Годнота-то какая)) Лепота)

  • @jamjam3337
    @jamjam33379 ай бұрын

    👏👍

  • @user-lk6vs2dz7w
    @user-lk6vs2dz7w9 ай бұрын

    я не англичанин конечно, но мне кажется что он упорно говорит не as, но ass view. А учитывая фотографии которые он выбирает, кажется что автор намекает нам на что-то)

  • @viktorsokolov8153
    @viktorsokolov81532 жыл бұрын

    Спасибо за уроки. Возник диссонанс. Почему template_name - index.html, но в urls мы указываем category html.

  • @163AlejanD
    @163AlejanD2 жыл бұрын

    Чтобы уходило на 404 kzread.info/dash/bejne/kWR9psaOZrOqetI.html можно также номер категории брать не из модели Women а отдельным запросом из модели категории и из него же брать title: cat = Category.objects.get(slug=self.kwargs['cat_slug']) context['cat_selected'] = cat.pk context['title'] = 'Категория - ' + cat.name

  • @stevejops007
    @stevejops007 Жыл бұрын

    template_ name можно и не передавать, если шаблон назвать соответственно (в данном случае women_list и women_detail) тогда джанга их автоматом найдет

  • @tesmanit
    @tesmanit6 ай бұрын

    Здравствуйте. Можете подсказать, в джанго kwargs имеет только параметры маршрута, или еще что-то?

  • @ll-uh2rz
    @ll-uh2rz Жыл бұрын

    Сергей, спасибо за уроки! Подскажите, почему класс WomenCategory работает без указания slug_url_kwarg, а ShowPost нет?

  • @selfedu_rus

    @selfedu_rus

    Жыл бұрын

    ой я уж спустя 2,5 года и не помню что за WomenCategory )) спросите в сообществе телеграм-канала, вам там подскажут.

  • @rostislavmalyshev1775
    @rostislavmalyshev17753 жыл бұрын

    Спасибо, суть понятна! Но кажется, что для небольших Вью вполне можно ограничится функциями.

  • @selfedu_rus

    @selfedu_rus

    3 жыл бұрын

    Конечно, что удобнее, то и используется!

  • @David-yj5kv
    @David-yj5kv3 жыл бұрын

    Здравствуйте. Использую ваш курс как наглядный пример и как посредник между документацией (смотрю как делаете вы - читаю про это в документации, книге или гугле. Так, сухая документация подкрепляется реальной структурой и выстраивается полная картина проекта). Спасибо огромное. Но информации очень много и усвоить без большого количества практики - невозможно. Можете посоветовать хорошее задание? С одной стороны нагугленные по запросу проекты "для джуниор джанго дев" ещё слишком абстрактные и сложные, с другой стороны сделать простые несколько страниц сайта, с несложными моделями и логикой я уже умею. Спрашиваю на случай если у вас есть хорошее отработанное задание, а так, конечно, буду искать сам, благо технология не малоизвестная. В целом просто хотел сказать вам спасибо. Ваш канал - это находка. Обязательно послушаю про генетические алгоритмы и многое другое, после того как смогу начать реальную работу в текущей области)

  • @selfedu_rus

    @selfedu_rus

    3 жыл бұрын

    Спасибо! Заданий так то не делал. Как вариант попробуйте сделать более сложный сайт с набором большого числа изображений (например, формул в тексте). Подумайте как хранить такие страницы на стороне сервера, как загружать. Еще вариант сделать простой форум.

  • @pioner2711
    @pioner27112 жыл бұрын

    У меня почему то класс от CreateView работает только от класса формы которая непосредственно связана с моделью, с формами не связанными с моделью выдает ошибку type error 'BaseForm.__init__() got an unexpected keyword argument 'instance'' Сергей подскажите в чем проблема?

  • @selfedu_rus

    @selfedu_rus

    2 жыл бұрын

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

  • @pioner2711

    @pioner2711

    2 жыл бұрын

    Я так понял, что CreateView нужен именно для работы с формами связанными с моделями, а для форм не связанными с моделями нужно наследоваться от FormView???

  • @dursinear8761
    @dursinear87613 жыл бұрын

    Спасибо, прекрасный урок. Но возник один вопрос. 24:29 , 51 строка, почему нельзя использовать редирект на ‘home’?

  • @crazyhowling2203

    @crazyhowling2203

    3 жыл бұрын

    Так можно или нельзя? Самому интересно

  • @lil_fritch
    @lil_fritch Жыл бұрын

    Спасибо большое за урок! У меня возник вопрос: зачем в определении функции def get_context_data(self, *, object_list=None, **kwargs): мы передаем "*" и "object_list=None", если оно все равно не используеться?

  • @stmustbk

    @stmustbk

    Жыл бұрын

    Мне кажется что оно используется, просто когда его все же нет, мы передаём его как None. Чтобы Джанго не выдавал ошибку

  • @nevermore222

    @nevermore222

    Жыл бұрын

    ​@@stmustbkя его из кода убрал . Ничего вроде не поменялось

  • @stmustbk

    @stmustbk

    Жыл бұрын

    @@nevermore222 в старых версиях приходилось его писать

  • @nevermore222

    @nevermore222

    Жыл бұрын

    @@stmustbk а ну то есть сейчас достаточно писать self в аргументах и более ничего не указывать и он будет работать? Теперь вроде бы ясно стало спасибо

  • @bastibubu5154
    @bastibubu51542 жыл бұрын

    Большое спасибо за супер уроки! Пожалуйста ответьте на один вопрос: Если в адресном поле пишем адрес тогда всё понятно, вызывается функция path и ищет соответствие адреса к маршруту и если есть соответствие тогда вызывается представление и потом уже шаблон. А вот когда нажимаем кнопку "читать пост" тогда кто кого вызывает? Откуда начинается цепь вызовов? В этом случае в адресном поле мы же ничего не пишем!

  • @selfedu_rus

    @selfedu_rus

    2 жыл бұрын

    Когда нажимаете на кнопку, то это такой же переход по URL-адресу, который в ней прописан. Если это обычная ссылка, то имеем GET-запрос к серверу, если форма, то может быть и дургой тип запроса.

  • @bastibubu5154

    @bastibubu5154

    2 жыл бұрын

    @@selfedu_rus Понял. Спасибо!

  • @dmitryzagorevskiy507
    @dmitryzagorevskiy5072 жыл бұрын

    Сергей, не обязательства ради, а понимания для, не могли бы Вы примерно сориентировать какие у Вас предположительные прогнозы по времени начала и окончания вашего очередного шедеврального курса по Django REST framework? Заранее большое спасибо хотя бы за очень приблизительный прогноз по времени.

  • @selfedu_rus

    @selfedu_rus

    2 жыл бұрын

    думаю, в конце января начнем )

  • @mrduckvc
    @mrduckvc Жыл бұрын

    Всё прекрасно, но есть вопрос, почему бы WomenCategory не наследовать от WomenHome и просто переопределить нужные методы? Просто ключевое отличие в фильтре. ИЛИ сделать всё ещё хитрее и определить некий WomenView где мы допустим будем указывать все стандартные методы(допустим настройки header) и от него уже дальше наследоваться.

  • @deniskrepak
    @deniskrepak2 жыл бұрын

    context["posts"][0].cat работает только в том случае, если есть хотя-бы одна запись, У меня идет еще категория "Другое" без записей, и она так не отображается, падает ошибка

  • @misha8280
    @misha82802 жыл бұрын

    Когда лучше использовать классы представления, а когда функции?

  • @ShadowStormlq5mwdasd
    @ShadowStormlq5mwdasd2 жыл бұрын

    При cat тоже работает context['cat_selected'] = context['posts'][0].cat - вместо cat_id - я помню Сергей говорил, что это почти одно и то же - я проверил в shell и там cat возвращает то что мы определили в __str__ в модели, а cat_id - pk (id, fk - кому как угодно) Category - я так понимаю мы ставили там cat_id для шаблона list_categories - но при изменении про которое я написал - всё работает - кто-то может объяснить почему?

  • @TheStalkerEagle
    @TheStalkerEagle2 жыл бұрын

    Спасибо за урок! Но почему бы в get_queryset не возвращать вместо "Women.objects.filter(...)" "self.model.objects.filter(...)"?

  • @selfedu_rus

    @selfedu_rus

    2 жыл бұрын

    Упс... я уже сейчас такую тонкость не помню )

  • @WolfKrugerr
    @WolfKrugerr Жыл бұрын

    У меня почему то не отображаются поля в классах CreateView и FormView. Может из-за того что они унаследованы от ModelForm в файле forms.py?

  • @user-nb3cv9bq9r
    @user-nb3cv9bq9r Жыл бұрын

    здравствуйте, извините, при проектирование подобного сайта возник вопрос, а что делать, если, условно, я хочу вывести в блок контента не только статьи, но и сами категории, вот так к примеру, певица: Пугачева, Лолита; актрисы: ходченкова; и возникает ВОПРОС, а как корректно передать класс представления несколько моделей ? Не уверен, что смогу получить ответ, но все же мало ли, заранее спасибо за ответ, многоуважаемый автор!!!

  • @zeinmusic3649
    @zeinmusic3649 Жыл бұрын

    Подскажите пожалуйста, если я еще на прошлом уроке наш список menu "обернул" в inclusion_tag и передал функцию в base.html будет ли это "ошибкой" или недочетом, хотя теперь наше меню у нас есть всегда)

  • @selfedu_rus

    @selfedu_rus

    Жыл бұрын

    можно, ошибки не будет

  • @zeinmusic3649

    @zeinmusic3649

    Жыл бұрын

    @@selfedu_rus благодарю вас!)

  • @AlexeyTeacher
    @AlexeyTeacher2 жыл бұрын

    Спасибо вам за уроки. Очень внятно и подробно. Почему то при открывании поста через класс. Не хочет работать slug по какой-то причине конфликтует с pk. С функцией все работает. Пользовательский слаг везде переименовал. На всякий случай удалил старые миграции, и заново сделал. Но все равно ругается на эти атрибуты(

  • @AlexeyTeacher

    @AlexeyTeacher

    2 жыл бұрын

    Если сделать по pk, то начинает работать. Но странно, я же делаю слаг(

  • @AlexeyTeacher

    @AlexeyTeacher

    2 жыл бұрын

    Это только detailview только проблема(

  • @selfedu_rus

    @selfedu_rus

    2 жыл бұрын

    да, по умолчанию идентификатор в Django следует брать по атрибуту pk

  • @AlexeyTeacher

    @AlexeyTeacher

    2 жыл бұрын

    @@selfedu_rus Но как переделать на слаг?)

  • @selfedu_rus

    @selfedu_rus

    2 жыл бұрын

    @@AlexeyTeacher Я, вроде, там дальше показываю, как по слагу выбирать запись (если не в этом, то в другом уроке).

  • @kedrjack4649
    @kedrjack4649 Жыл бұрын

    На 11:15 Думаю лучше писать не return Women.objects.filter(is_published=True) А; return self.model.objects.filter(is_published=True) чтобы не нарушать принцип так какой-то про хранение всего в одном месте

  • @urrchach

    @urrchach

    10 ай бұрын

    Мне не помогло😢

  • @user-zl3xz2pf9w
    @user-zl3xz2pf9w2 жыл бұрын

    У меня эта шапка сайта с навигацией сразу работала на главной странице, это из за того что я сделал домашнее задание?

  • @163AlejanD

    @163AlejanD

    2 жыл бұрын

    да

  • @Alex-un3nz
    @Alex-un3nz Жыл бұрын

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

  • @gkenjutsu
    @gkenjutsu2 жыл бұрын

    Объясните пожалуйста, в каких случаях лучше использовать какой класс View

  • @selfedu_rus

    @selfedu_rus

    2 жыл бұрын

    В зависимости от вида выдаваемой информации на странице (список, статья, форма и т.п.).

  • @Razilator
    @Razilator3 жыл бұрын

    А как правильно указать в DetailView, если у меня так "/ slug_url_kwarg = 'post_cat' slug_url_kwarg = 'post_slug' Списком он не принимает. Просто у меня получилось, если с такими двумя, да и с одним получается. Но хотелось бы ещё, чтоб если я менял название категории на другое, то выдавало бы ошибку 404, а не ту же новость.

  • @user-jo8sb7zx5d
    @user-jo8sb7zx5d2 жыл бұрын

    Ох, как всё сложно. Спасибо за урок, как всегда очень подробно. А зачем вообще делать эти все представления, а не просто по конкретным URL выдавать нужные html страницы и в них выводить как и раньше? Так выглядит намного сложнее всё. В данный момент я разбираюсь с wagtail, там чуть проще, но нужно и простой джанго знать так же.

  • @johndoe9604

    @johndoe9604

    Жыл бұрын

    Выглядит сложнее по началу, но в последующем, если ты будешь писать большое веб-приложение, будет много головной боли если делать все «по простому»

  • @user-ls2ew7ye9m
    @user-ls2ew7ye9m8 ай бұрын

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

  • @helish_88
    @helish_883 жыл бұрын

    И django сам проверит если форма валидна? is_valid() спс за уроки, у вас самые топовые

  • @selfedu_rus

    @selfedu_rus

    3 жыл бұрын

    да, в соответствии с настроенными валидаторами в модели формы

  • @user-xw3km1bv5o
    @user-xw3km1bv5o Жыл бұрын

    Спасибо! шаг за шагом появляется ясность. У меня вопрос. Если модель1 имеет форин кей к другой модели2, и мне нужно сделать форму по добавлению записи в модель1. Как мне это сделать? джанго ругается, что поле не ссылается на внешнюю модель2 (мне понятно, что там такой записи нет). Как сделать, чтобы объединить такое добавление? просто сделать модель2.objects.create(поле='значение') и потом form.save()?? или есть проще метод?

  • @selfedu_rus

    @selfedu_rus

    Жыл бұрын

    Лучше это обсудить в ТГ-канале (ссылка под видео). А в двух словах, Django, скорее ругается, что поле не заполнено (а не то, что оно не связано, связь, как раз в модели указана). Тут возможно параметр default нужно еще прописать, тогда при добавлении новой записи в модель2 пойдет значение по умолчанию, но тогда оно будет дублироваться, а это, скорее всего, недопустимо. В общем, надо подумать, чтобы не было дублирования и значение автоматом прописывалось. Варианты есть.

  • @suhanoves
    @suhanoves3 жыл бұрын

    В ShowPost забыли добавить context['cat_selected'] = context['post'].cat_id, чтобы при просмотре поста выделялась категория, к которой принадлежит девушка (по мне это не очень решение, т.к. я не могу теперь перейти быстро на всех девушек из этой категории, но так было в функции отображения, но пропало в классе) :)

  • @selfedu_rus

    @selfedu_rus

    3 жыл бұрын

    Уже не помню такие что было в 15-м занятии, возможно, просто демонстрировал празличные классы представлений. На следующем все это сделано через миксины.

  • @user-oy5ey2eq2n
    @user-oy5ey2eq2n Жыл бұрын

    Вы говорите что в словаре extra_context можно передавать только статические данные, это не так. У меня любые данные работают: списки, выборки из моделей, можно хоть форму передать. Меню отлично передается и работает. Я что то упускаю?

  • @user-ml4xx7ii8x
    @user-ml4xx7ii8x Жыл бұрын

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

  • @user-vb9jj2pq4u
    @user-vb9jj2pq4u3 жыл бұрын

    Доброго времени. У меня такой вопрос возник. Если у меня поле в моделе называется не slug, а url. В таком случае использование атрибута slug_url_kwarg(класса DetailView) выдает ошибку FieldError. Как быть? Поле переименовывать не хочется

  • @user-vb9jj2pq4u

    @user-vb9jj2pq4u

    3 жыл бұрын

    Сам разобрался. Необходимо тогда прописать атрибут slug_field с нужным значением(в моем случае 'url'), а уже после него slug_url_kwarg с таким же значением

  • @Manu-ei6tn
    @Manu-ei6tn2 жыл бұрын

    На 23:21 Как класс представления ShowPost понял, что нужно брать одну запись и именно с Шакирой (на которую нажали)? В функции представлении мы делали фильтрацию по слагу. А здесь как?

  • @V.D.

    @V.D.

    10 ай бұрын

    Автору вопроса, надеюсь, уже давно всё понятно, а тем, кому не понятно - по полю РК или слаг. ?В этом случае по слагу "тайтл" = имя героини? Через урлконф

  • @WolfKrugerr
    @WolfKrugerr Жыл бұрын

    Как нужно прописать форму в шаблоне? Так же как и раньше?

  • @Anton-eu2qx
    @Anton-eu2qx3 жыл бұрын

    Добрый день! Помогите советом. Цель: создать список фотоальбомов(категории), добавлять в них фото, в зависимости от альбома. Вопрос: как правильно прописать функцию get_queryset для вывода фото по выбранному альбому? # Модель альбома с фотографиями class Album(models.Model): title = models.CharField(max_length=100, verbose_name='Название Альбома') slug = models.SlugField(unique=True, db_index=True, verbose_name='URL Альбома') image = models.ImageField(upload_to='photo/%Y/%m/%d', verbose_name='Обложка') def __str__(self): return self.title def get_absolute_url(self): return reverse('gallery', kwargs={'album_slug': self.slug}) class Meta: verbose_name = 'Album' verbose_name_plural = 'Albums' ordering = ['title'] # Модель фото для альбома class Photo(models.Model): photo = models.ImageField(upload_to='photo/%Y/%m/%d', verbose_name='Фото') album = models.ForeignKey(Album, on_delete=models.PROTECT, null=True, verbose_name='Альбом') class Meta: verbose_name = 'Photo' verbose_name_plural = 'Photos'

  • @user-tv4mn2fu6x
    @user-tv4mn2fu6x2 жыл бұрын

    Добрый вечер! Как правильнее то в итоге делать: на функциях или на объектах???

  • @selfedu_rus

    @selfedu_rus

    2 жыл бұрын

    зависит от задачи, как удобнее

  • @nevermore222
    @nevermore222 Жыл бұрын

    Вот я что то не понимаю . А зачем в аргументах get_context_data - '*' и 'object_list=None' ? Я их вроде удалил и ничего не поменялось . Да и нигде не используется оно вроде бы

  • @HeyWhoTheFuckAreYou
    @HeyWhoTheFuckAreYou3 жыл бұрын

    Меняя параметр context_object_name = "posts" откуда собственно говоря берётся данная переменная posts этот момент мне крайне не понятен, условнов object_name я могу понять он создаётся при создании model = Women, но откуда появляется переменная с этими данными posts, или это обычный ренейм object_name???

  • @selfedu_rus

    @selfedu_rus

    3 жыл бұрын

    Здесь мы присваиваем строку 'posts', на основе которой уже в шаблоне автоматически создается переменная с этим именем. Происходит неявно, но нам это и не важно.

Келесі