#6. Класс ModelSerializer и представление ListCreateAPIView | Уроки по Django REST Framework

  Рет қаралды 45,515

selfedu

selfedu

2 жыл бұрын

Практический курс по Django: stepik.org/a/183363
Создаем сериализатор для моделей фреймворка Django на основе базового класса ModelSerializer. Определяем класс представления для получения списка записей и изменения записи, используя класс ListCreateAPIView.
Телеграм-канал: t.me/django_selfedu
Инфо-сайт: proproprogs.ru/django
drfsite-6.zip: github.com/selfedu-rus/rest-f...
Классы представлений: www.django-rest-framework.org...

Пікірлер: 80
@ural-site
@ural-site 2 жыл бұрын
"А сейчас берем и все это удаляем и пишем 2 строчки кода и работает также", вот она магия Джанго и ДРФ которую я так люблю!!!
@backtoblack1192
@backtoblack1192 3 ай бұрын
Для того кто не изучал ООП все кажется магией
@ural-site
@ural-site 3 ай бұрын
@@backtoblack1192 куда уж нам до вас
@Alex-lg9tn
@Alex-lg9tn Жыл бұрын
12 минутный ролик у меня занимает почти весь день
@Dmitriy-kh
@Dmitriy-kh 2 жыл бұрын
Sergei Balakirev Известный программист и преподаватель 21 - го века. Его наследие актуально и живо по сей день!
@ne_zabyc_dadac
@ne_zabyc_dadac 2 жыл бұрын
С нами Сергей Балакирев, а от нас как всегда слова благодарности сэнсею монастыря программирования
@user-xv7sh6lp7o
@user-xv7sh6lp7o 2 жыл бұрын
Продолжаем подробно изучать фреймворк. 👍 Спасибо.
@sergejg4773
@sergejg4773 Жыл бұрын
Добрый день. Нет я так не думаю косаемо "Какого фига". Даже наоборот. Преведущии ликции/уроки очень полезны. Ничинаешь понимать что зачем, как работет и взаимодейстуем друг между другом. Благадаю за уроки. Супер полезная информация. Надеюсь далее будет много нового.
@aidartimerbayev9600
@aidartimerbayev9600 2 жыл бұрын
Предыдущие уроки помогли понять сущность представление ListCreateAPIView. Ваши уроки помогают быстрей осмыслить архитектуру Django Rest Framework. Огромное спасибо!
@evilcorp.3546
@evilcorp.3546 2 жыл бұрын
БОЖЕ, СПАСИБО ТЕБЕ ЗА ЭТИ УРОКИ! ЭТО ТО ЧТО Я ИСКАЛ, И ТЫ ТУТ КАК ТУТ!!!
@my_way_to_heaven
@my_way_to_heaven 2 жыл бұрын
Сергей, вы потрясающий преподаватель! Спасибо, что сначала показали работу сериализаторов на базе классса serializers.Serializer и только потом уже более быстрый вариант. Ваш труд неоценим
@johk2293
@johk2293 Жыл бұрын
Вы вроде сказали, что класс ModelSerializer и текущая реализация заменили нам все эти строки кода, но на самом деле эта смена сделала даже больше. Я определял поля title и slug и сделал их оба уникальными, поэтому в прошлой "ручной" реализации даже со всеми проверками и обработками вылетала страница с ошибкой джанго, ведь я пытался добавить повторяющиеся значения в бд. Этот сериализатор умеет проверять подобные ограничения сам, очень круто
@NickTyupin
@NickTyupin 2 жыл бұрын
Спасибо! Как всегда все на высшем уровне ))
@andrewharazdowskyy4771
@andrewharazdowskyy4771 2 жыл бұрын
Большое Спасибо! За урок и умение размышлять. На 8 мин 16 сек не изменял второй маршрут - перестанет работать определенный ранее метод. Ваши уроки приносят мне большое удовольствие.
@eternal_genius
@eternal_genius 5 ай бұрын
у меня была ошибка "'method' object is not iterable" мне помогло добавить () после .objects.all
@rostislavmalyshev1775
@rostislavmalyshev1775 2 жыл бұрын
Как всегда на высоте! Очень правильно, что в уроках в начале рассматривается базовый класс, а затем его наследники.
@user-pi7ds1ti4m
@user-pi7ds1ti4m 2 жыл бұрын
Какие же у Вас ОФИГЕННЫЕ уроки. С таким внятным погружением в тему просмотров должно быть раз в 50 больше! Автору огромный респект и пожелание удачи!
@oleksiykrasnolutskiy9498
@oleksiykrasnolutskiy9498 2 жыл бұрын
На данном примере ListCreateAPIView очень классно проанализировать принципы SOLID, там практически все принципы продемонстрированы)))
@user-vh8pu5sn4e
@user-vh8pu5sn4e Жыл бұрын
Спасибо, в этом и фишка, очень классно, что вы показали все что под капотом!!!
@user-uo4ut2du1z
@user-uo4ut2du1z 2 жыл бұрын
Тонкая самоирония на тему наследия😀. Надеюсь люди будут помнить вас долго, если вам это важно))
@airguy5964
@airguy5964 Жыл бұрын
Прекрасный урок, спасибо большое
@shama2783
@shama2783 Жыл бұрын
вы лучшиииииииййййй!!!!!!!!!
@unaibekovbakhyt6517
@unaibekovbakhyt6517 2 жыл бұрын
Спасибо за качественный контент
@JohnKannedy
@JohnKannedy 11 ай бұрын
Спасибо за урок, очень интересно
@ii3246
@ii3246 4 ай бұрын
не помню говорил или нет но в Pycharm есть возможность как и просмотреть различные базы данных, так и postmen тоже есть. это очень удобно при разработке, не надо раскрывать горы ПО.))
@andredru4278
@andredru4278 10 ай бұрын
Спасибо. Отлично и познавательно.
@iam_foreman
@iam_foreman Жыл бұрын
Сергей, спасибо большое!
@rosinant1533
@rosinant1533 5 ай бұрын
ты лучшый🤝👍👍👍👍👍👍👍👍👍 обяснил так круто просто шикарно мастерство
@user-tb8io7hh4f
@user-tb8io7hh4f Жыл бұрын
Круто ,спасибо огромное!!!
@Lnx_Mint
@Lnx_Mint 10 ай бұрын
POST(" Его наследие актуально и живо по сей день.")
@azeramikishiyev1703
@azeramikishiyev1703 2 жыл бұрын
Едем дальше !!!)
@ne_zabyc_dadac
@ne_zabyc_dadac 2 жыл бұрын
"Сергей Балакирев - известный программист и преподаватель 21-го века. Его наследие актуально и живо по сей день." Сергей, вы не против, если мы будем добавлять этот комментарий под ваши видео? ))
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Спасибо, но это была самоирония ))
@stayingaliveable
@stayingaliveable 10 ай бұрын
спасибо за видео!!
@pavels4490
@pavels4490 2 жыл бұрын
На 5:05 просто шикарный комментарий ;)
@glamb_is_learning
@glamb_is_learning Жыл бұрын
мы прописали "path('api/v1/womenlist//', WomenAPIList.as_view())", но ведь WomenAPIList обрабатывает только GET и POST запросы... тем самым, мы потеряли функционал PUT и DELETE upd: в следующем видео об этом говорится:) но я оставлю это сообщение на всякий случай
@hovosimonyan799
@hovosimonyan799 2 жыл бұрын
Спасибо!
@jamjam3337
@jamjam3337 5 ай бұрын
😎
@marrr_marrr5315
@marrr_marrr5315 Жыл бұрын
Сергей, спасибо большое, ваши уроки просто образцовые! Есть небольшое неудобство во фреймворках: если это не JetBrain среда разработки, непонятно как посмотреть код класса, от которого происходит наследование. Работаю в VSCode. Когда нет возможности посмотреть логику под капотом, осознание происходящего ломается. В документации описано в каком случае использовать, но как-то неудобно это всё. Спасибо, что раскрываете для нас детали.
@marrr_marrr5315
@marrr_marrr5315 Жыл бұрын
Ой, благодаря вашим урокам заставила себя поднапрячься и всё нашла=))
@dedpihto680
@dedpihto680 Ай бұрын
походу в новых версиях дрф в этом классе апилист пост запросы запрещены. в описании класса нет описания пост.
@user-cu4jt2hp2p
@user-cu4jt2hp2p 3 ай бұрын
Доброго времени суток. на отрезке по времени 6:49 приведены классы. Случайно не допущена ошибка в последнем классе? Написано "добавление" записи и далее перечислен метод DELETE.
@ibrahimoglu
@ibrahimoglu 2 жыл бұрын
👍
@dmitriivanov7010
@dmitriivanov7010 Жыл бұрын
3.08 Отправим Пост запрос Сергей Балакирев - Известный программист и преподаватель 21-го века. Его наследие актуально и живо и по сей день. Правильно, скромность украшение только тогда, как нет других украшений 😉
@MrGhast
@MrGhast Жыл бұрын
Благодарю за классные уроки! Один момент: в этом уроке в файле urls в строке с pk вы заменили старое представление новым (ListCreateAPI). Наверное, не надо было? Потому что LIstCreateAPI использует только GET и POST методы, а тот url с pk нам нужен для PUT или PATCH. Возможно, я что-то недопонял. Ещё раз спасибо! )
@donfedor007
@donfedor007 2 жыл бұрын
Не будет дальше если я хочу передать не id категории, а название? И если нет что бы она создавалась. И возвращался не id а полностью категория с id и названием?
@philipsemirenko8547
@philipsemirenko8547 2 жыл бұрын
Ceрый, ты конечно красавчик спору нет. Но за 5 уроков я на тебя был очень сильно зол, мы с товарищем не находили себе место и вместо продолжения обучения джанги подумывали пойти уже коров пасвить, но на 6 уроке мы прозрели и поняли, что зря на тебя злилсь. Но ты так больше не делай. Спасибо
@ahil7800
@ahil7800 2 жыл бұрын
Добрый день. Сергей, подскажите пожалуйста что делать если в listapiview мне надо выводить всего пару полей, и одно из них (content) должно быть сокращённое (первые 50 символов), а при создании новой записи надо выводить все поля. Как прописать обязательное отображение полей в одном случае, и необязательное в случае списка? В этом случае ListCreateAPIView не подходит и придётся для каждого свой вью и свой сериализатор делать?
@beatrisavan8352
@beatrisavan8352 2 жыл бұрын
Замечательные уроки, спасибо! А как при создании записи возвращать только её id?Пробовала в fields, но там все поля нужны для сериализации при создании
@selfedu_rus
@selfedu_rus 2 жыл бұрын
В сериализаторе в fields как раз и прописывается
@newskills-
@newskills- 2 жыл бұрын
Конечно я согласен, что видео как всегда на высоте, тем более такого качественного контента редко когда встретишь даже на платных курсах. Но у меня всегда возникает такое чувство, когда нас учат более сложному методу в начале пути, когда мозги просто набекрень сворачиваются и на эти объяснения уходит столько времени, а потом раз и в все это в две строчки кода, все понятно и логично. Вот у меня возникает такой вопрос: это необходимо в начале так "засерать" мозги новичку? И такой метод используется на практике в профессиональной среде, если можно все сделать короче? Мне всегда казалось, что в начале лучше показать как этот метод применяется в простой форме и на практике, а вот когда ты захочешь понять как эти методы работают более подробно, тогда только уже вникать в их суть. И я всегда встречаю такой подход в обучении, так долго пытаюсь вникнуть как это все работает, а всего навсего можно было написать в две строчки. Там в начале когда начались эти танцы с бубном, сразу можно было заметить, что этот код уже где-то присутствовал, что идет явный повтор, потом вспоминаю в файле models.py Так эти вопросы меня все время беспокоят, зачем показывать такие методы в начале пути, когда их все равно не используешь и все равно этот код будет не нужен? И на это ушло 2-5 уроки. Так же я смотрел уроки по Django, читал материалы с сайта, но в итоге весь код который мы писали в начале не дожил до конца, а был изменен практически полностью. Я Django по этим урокам так и не понял, пока не нашел другие ресурсы, где мне не показывали вот таких глубинных познаний, а показали сразу как это разрабатывается с нуля, и до конца не меняя код по пути, а строя его логику сразу. И вот по такому уроку я сразу понял, как это работает Django и научился создавать свои проекты. Уже когда я стал понимать это, тогда только стал смотреть уроки, (а как же это сделать посложнее ), чтобы вникнуть в суть, но это уже ради интереса.
@andrewharazdowskyy4771
@andrewharazdowskyy4771 2 жыл бұрын
Уважаемый New Skills! Много много лет тому назад в одной воинской части товарищ прапорщик продемонстрировал мне работу транзистора, создавая на коллекторе напряжение 0 и 5 Вольт (аналог 0 и 1) . С тех пор у меня в жизни не возникало вопросов и проблем при работе с микросхемами логики, контроллерами и микропроцессорами, булевой алгеброй, двоичной и шестнадцатиричной системой счисления, ассемблером и так далее.... А вот если товарищ прапорщик бы мне рассказал как работает микропроцессор - не уверен, что когда либо я бы узнал как работает транзистор. Видать правду говорят - путь к Богу у каждого свой!
@Dmitriy-kh
@Dmitriy-kh 2 жыл бұрын
Думаю ты не внимательно смотрел уроки, так как Серега в самом начале сделал простой вариант вьхи + сиреализатор, которые в паре работали с двух строчек, с чего уже было видно сто все работает с двух строчек. Дальше было погружение в детали, без которых кстати говоря не одно апи и не сделается. Я на своей практике ни разу не встречал коммерческого апи где бы хватало базовых классов фреймворка, и не приходилось ничего переопределять.
@my_way_to_heaven
@my_way_to_heaven 2 жыл бұрын
RetrieveUpdateAPIView реализует GET- и POST-запрос? Разве не GET и PUT. Ведь, POST обычно используют для занесения новой записи в БД, а для изменения PUT
@selfedu_rus
@selfedu_rus 2 жыл бұрын
да, ошибочка, там GET, PUT и PATCH, спасибо!
@Taron8117
@Taron8117 Жыл бұрын
Добрый день. Может кто знает. Код один в один как в видео но метод PUT не разрешен показывает. Что может быть не так?
@Taron8117
@Taron8117 Жыл бұрын
Я понял. Мы же поменяли view и теперь view умеет только get и post делать через встроенный класс ListCreateAPIView. А в url у нас указан как раз view WomenAPIView.
@mikug6735
@mikug6735 Жыл бұрын
Ну да, у вас просто опечатка). На офф документации PUT, PATHC, GET.
@mikug6735
@mikug6735 Жыл бұрын
Может уже не актуально, но есть вопрос. RetrieveUpdateAPIView, разве она не GET и PUT запросы обрабатывает, или я что-то не понял. 6:33
@mikug6735
@mikug6735 Жыл бұрын
И да, я много читаю и смотрю всякой всячины, но ваше преподавание самое детальное. Вас интересно смотреть из-за хорошо поставленного голоса и очевидно большого багажа знаний. Respect!
@antonkuzmich4624
@antonkuzmich4624 Жыл бұрын
2:28 у меня этот cat не работает. Причем когда добавляешь - работает, а когда весь список выводишь - не хочет. А если cat_id - наоборот.
@antondopira5957
@antondopira5957 11 ай бұрын
ну может ты в модели Women прописал не cat, a cat_id?)
@ayansultan9764
@ayansultan9764 2 жыл бұрын
У меня проблема с category. В постмане он показывает null, когда я указываю ключ category. Но когда указываю category_id, он показывает его value правильно. Как это исправить?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
суффикс id джанго добавляет для внешних ключей автоматом
@ayansultan9764
@ayansultan9764 2 жыл бұрын
@@selfedu_rus так я не про это. Я про то, что у вас в примере вы с ключом "cat" смогли вытащить все данные, у меня он выводит все как null. Именно значение cat. А когда в сериализаторе ставлю ключ category_id он выводит данные из бд. Я не могу понять, почему он выводит null значение с ключом "cat"
@selfedu_rus
@selfedu_rus 2 жыл бұрын
по идее, если работаете через модели, то сериализтор (стандартный) должен переводить внешний ключ в атрибут с тем же именем, то есть, без id. Посмотрите внимательнее, возможно, вы где-то явно прописываете суффикс id (я в предыдущих проектах так делал, т.к. использовался свой сериализатор). Может и у вас осталось это.
@ayansultan9764
@ayansultan9764 2 жыл бұрын
@@selfedu_rus а это может быть из-за PostgreSql? Там category сохраняется как category_id и когда он делает retrieve данных, может он просто не понимает что за cat?
@ayansultan9764
@ayansultan9764 2 жыл бұрын
@@selfedu_rus я прост, вместо SQLite использую постгре
@maksimvlaskin7305
@maksimvlaskin7305 11 ай бұрын
+
@novackirr
@novackirr Жыл бұрын
🕳
@denis5232
@denis5232 Жыл бұрын
Как правильно оформить удаление из бд ? def delete(self, request, *args, **kwargs): pk = kwargs.get("pk", None) if not pk: return Response({"Error": "Methon DELETE not allowed"}) # Берем запись из таблицы по ключу PK и удаляем запись try: isinstance = Women.objects.get(pk=pk) except: return Response({"Error": "Object does not exsist"}) isinstance.delete() return Response({"post": "delete post" + str(pk)}) Использовал такой вариант, но при этом при добавлении новой записи в БД ее PK считается не по порядку, а пропуская удаленный номер из БД.
@denis5232
@denis5232 Жыл бұрын
Если использовать id вместо pk то при попытке удаления выдает {"Error":"Methon DELETE not allowed"}
@Webian
@Webian Жыл бұрын
Ты бы еще с начала появления программирования начал, а потом плавно в эту тему перешел
@narcomann1646
@narcomann1646 8 ай бұрын
Нифига подобного, все через такие костыли обучают. А для новичка это ад просто. Сначала он ондно пишет (не до конца понимая, что пишет), потом стирает все, что написал, афигевает, и начинает писать по-другому. По итогу в голове каша. Не лучше ли сначала дать как он будет делать 90% времени, а потом уже отдельными дополнениями, когда у него все уложится, дать фишки и подробности?
@user-bi9eb7zs5j
@user-bi9eb7zs5j 2 жыл бұрын
Спасибо!
Who has won ?? 😀 #shortvideo #lizzyisaeva
00:24
Lizzy Isaeva
Рет қаралды 64 МЛН
HAPPY BIRTHDAY @mozabrick 🎉 #cat #funny
00:36
SOFIADELMONSTRO
Рет қаралды 17 МЛН
WHAT’S THAT?
00:27
Natan por Aí
Рет қаралды 13 МЛН
Парсим админку Мегамаркета с помощью скрытых API
30:56
Алексей Куличевский
Рет қаралды 61 М.
Зачем нужны указатели в C++?
8:14
Django REST Framework - создаем API для сайта
21:17
Дед погроммист
Рет қаралды 16 М.
Понять Django. Пишем "Hello world". Объясняю просто и с картинками.
25:49
Клуб дедов-программистов
Рет қаралды 180 М.
Who has won ?? 😀 #shortvideo #lizzyisaeva
00:24
Lizzy Isaeva
Рет қаралды 64 МЛН