Один из этапов моего обучения – освоить Django Framework. И вот настал тот день, когда я решил приступить к этому этапу, а именно, создать свой первый небольшой проект под руководством Сергея Бобровского.
Обычно знакомство с каким-то ПО начинается с его установки, но тут даже рассказывать нечего. Все прошло в пару кликов мыши. Как-то скучновато.
Затем пришлось столкнуться с самым сложным, с архитектурой вновь созданного проекта. Я до сих пор не осознал как же корректно делить свой код на приложения. И в этом основной мой косяк, так как я считаю, что это очень, нет ОЧЕНЬ важный момент при разработке web-приложения на Django. Надеюсь позже, при разработке более глобальных проектов я пойму что к чему в этом плане.
Следующим шагом на пути освоения данного фреймворка стало знакомство с моделями. Я на данный момент не стал подключать полноценную СУБД и ограничился SQLite3. С моделями все оказалось не так просто. Я всегда испытывал проблемы с пониманием взаимоотношений между сущностями (One-to-many, many-to-many, one-to-one) и тут наступил на те же грабли. Спустя n-ое кол-во времени и нескольких прочитанных статей/просмотренных видео, я освоил данный материал и научился оформлять примитивные Django Models. На данный момент смог сделать что-то такое: модели “Автомобиль” и “Бренд”.
Далее было решено освоить Django Rest Framework – дополнение к django, позволяющее реализовывать доступ по api к моему бекенду.
На данный момент особо вникнуть во все тонкости настроек мне не удалось – не было такой поставленной задачи. Но смог изрядно повозиться со вложенной сериализацией сущностей. Моя сущность “Автомобиль” связана с сущность “Бренд” и мне очень хотелось чтобы при запросе через api всех автомобилей в теле ответа видеть не просто заголовок бренда, а всю полноценную модель. Для этого в rest framework-e есть Nested relationships
, который имеет флаг many=True
. Именно этот флаг я поставил в ненужном месте и очень долго не мог понять что же я делаю не так. Но, к счастью, проблему удалось одолеть.
Под сериалайзеры я завел отдельный файл и, собственно, там их и описал.
Сама view для отображения данного api-запроса выглядит пока совсем примитивно.
Продолжение следует…