Comments 11
а зачем нам class Config: внутри класса?
Это конфиги моделей. Данная конструкция предусмотрена контрактом библиотеки Pydantic. Внутри можно указать массу дополнительных настроек.
Не бросайте уроки, пожалуйста.
Подписался, выглядит многообещающе. Спасибо
Очень круто, продолжайте! Не хватает таких статей от знающих людей, использующих современные инструменты и здравый смысл.
Спасибо! Имеется уже вторая статья. Добро пожаловать)
Большое спасибо за труд, сам сейчас являюсь начинающим бэкенд разработчиком на Python(Django + DRF в основном). Работаю уже около 5 месяцев и понимаю, что мне явно не хватает некоторой системности знаний. Ну то есть появляется у меня задача допустим сделать некоторое API все возникшие проблемы решаются в основном с помощью stackoverflow и в итоге получается не очень хороший код с точки зрения его поддержки в будущем, код ревью к сожалению пока что почти полностью отсутствует у меня. Стек сейчас это Django+DRF, PostgreSQL, Celery, Redis. Развертывание локально обычно через docker-compose, тестовый сервак на dokku. Может быть, у вас есть совет как в этом всем зоопарке упорядочить знания ? ) Пробовал вроде и разные книжки и курсы, к сожалению большинство из них из разряда "как создать переменную". Куда копать чтобы появилось понимание решения типовых задач в первую очередь ? Как можно оценить оптимальность решения ? А то сейчас у меня получается, что код работает и ладно и всех это устраивает, а хочется чтобы он не просто работал а ещё и оптимально это делал.
Спасибо за комментарий.
Первое и самое главное, я так понимаю, вы уже сделали — нашли работу и получаете боевой опыт. Здесь главное — признавать свои ошибки и находить лакуны в собственных знаниях. Конечно, идеально было бы обзавестись старшим коллегой, который делился бы опытом на примере вашего общего проекта. Такой шеринг знаний всегда более эффективен, нежели объяснения на картошке и на пальцах. Если честно, я до сих пор не люблю работать один. Нет, всегда нужен напарник, хотя бы для ревью.
Полагаю, при работе с DRF следует обратить внимание на подход RESTful API. Поищите на хабре, почитайте, если ещё не. Ну и, конечно, берите официальную документацию DRF, штудируйте её по пунктам (там, кажется, в меню прямо так и было: Serializers, Views и так далее). Лично я, помнится, в своё время несколько раз перечитывал её и постоянно возвращался к ней во время работы. При чтении у вас обязательно отложится часть знаний, а затем при появлении незнакомой задачи вы вдруг вспомните, что вроде бы что-то такое уже видели, найдёте и реализуете уже менее костыльно.
Про Docker Compose можете почитать у меня во второй статье. Ознакомьтесь, почитайте комменты и погружайтесь глубже во всё, что не понятно. Гуглите, читайте туториалы.
По поводу типовых задач... Знаете, может, я давно уже не сталкивался просто, но что-то у меня возникает ощущение, что нет никаких типовых задач. Некоторые только кажутся таковыми из-за своей похожести друг на друга, но на деле всегда выясняется, что там нюансов вагон и маленькая тележка. Сразу скажу: не существует такой Библии питониста или программиста, после прочтения которой навык решения задач вырастает на +N. Только практика, только опыт, подкреплённый параллельным изучением теории.
Как оценить оптимальность решения? Для этого и нужны товарищи-напарники. Самому в моменте, увы, никак. Пройдёт год-два, и тогда вы обязательно поймёте, что код не оптимален, и надо было делать по-другому. А потом через год-два это повторится с новым кодом. И так по кругу, если вы будете продолжать расти.
Прошу прощения за абстрактный ответ без конкретики, но у меня действительно нет ничего иного, кроме доброго напутствия. :)
Без код ревью от более опытных коллег, к сожалению, спасения от говнокода нет.
Ситуацию могут облегчить книги и лекции Боба Мартина (чистый код, чистая архитектура) и какой-нибудь курс по шаблонам проектирования (именно на питоне, классическая книга банды четырех будет бесполезной тратой времени).
Сверху можно присыпать книгой с кабанчиком, но лучше найти способ показывать кому то свой код, если не целиком, то хотя бы структуру и какие-то основные элементы
[Python Intermediate] Урок 1. Конфигурация приложения