№1 Практическая онлайн-школа обучения языкам программирования Python (Django), JavaScript, Kotlin В. Бовсуновского.

Специальная, подарочная акция получения доступа к Django4!

Как, я, начал код писать в Python? Смотрите, если уперлись и ничего не получается.

  

дата публикации: 29 ноября 2023 г.


Мы легко можем использовать Django с REST API в качестве бэкэнда к для мобильного приложения Flutter

Многие ребята читая эту статью поймут, что вообще ничего не знает о веб разработке и о серьёзной разработке вообще, но я вам скажу так. Не нужно бояться, просто секрет в том, что подходить нужно комплексно, именно поэтому я предъявлял требования. Что бы ребята понимали код и документацию, та как при разработке нужно уже это использовать и решать другие задачи.

Эта статья не теоретическая это упрощённый план, что необходимо будет проделать, ведь нужно понимать, что делать. И уже каждый читая сможет себе поставить задачи. Что подтянуть.

Тем не менее и новички могут участвовать в разработке и оттачивать свой подход.

Я не описывал все, иначе это будет книга. Моя цель стояла в том, что бы показать главное.

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

Успех гарантирован.

Я решил давать информацию дозировано, что бы не было страха.

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

Томить не буду.

Мы легко можем использовать Django с REST API в качестве бэкэнда к для мобильного приложения, созданного с помощью Flutter. (или любого другого движка)

Вот предлагаемый подход:

  1. Бэкэнд-разработка с помощью Django:
    • Настраиваем проект Django и создаём необходимые модели для представления пользователей и их данных.
    • Мы с Вами начнём с профиля пользователя. Здесь важно сделать вывод, что понимание должно быть основательным и глубоким.

Важно в конце мы будем обсуждать отличие API от RestFullApi,

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

Это важно в первую очередь. Потому что Api нужно планировать и у него должна быть архитектура. Потому что если у вас нет чёткого понимания как будет работать пользователя, просто мы не сможем сделать нормальные API, а значит зароемся в исключениях.

  • Разработка веб-приложений:
  • Разрабатываем веб-приложение, используя систему шаблонов Django или интерфейсную среду, вполне воззможно подключение ​​как React, Angular или Vue.js, которая интегрируется с Django. Пока не определены, оставим на позже решение.
  • Создаём представления/страницы регистрации пользователей и управления пользователями в своем веб-приложении. Эти представления будут взаимодействовать с серверной частью Django через созданные вами API REST.
  • Реализуем проверку формы, обработку ошибок и любые другие функции внешнего интерфейса, специфичные для веб-приложения.


Разработка мобильного приложений с Flutter или Toga:

Остановимся на Flutter , так как у многих ребят, будет в голове не понятно, Джанго на Пайтон, Flutter на Dart и как оно будет работать как единое целое.

Используя Django с REST API, мы можем централизовать свою серверную логику и использовать ее между веб-приложениями и мобильными приложениями. И веб-приложения, и мобильные приложения могут взаимодействовать с серверной частью Django через одни и те же конечные точки API.

Обязательно тщательно важно спланировать дизайн API, учитывая структуры данных и требования к аутентификации/авторизации, специфичные для вашего приложения. Следование принципам RESTful и использование возможностей Django и Flutter помогут нам создать надежное и масштабируемое решение.

Поговорим отдельно об API.

Для начала я прошу разобраться, в разнице между REST API и RESTFullAPI, я вам коротко поясню:

есть http pапросы: их не много

CONNECT, DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT, TRACE.

Тот кто изучал Django знает по формам POST запрос.

То есть REST это стиль архитектуры, иными словами обращение при помощи этих запросов.

GET /object/list — получение обычной страницы

POST /object/list получение формы.

Ну хорошо.

Мы сделали API наклепали,

GET /object/list

  • POST /object/list
  • PUT /object/list

При возникновении ошибки(исключения нам придётся разбираться с исключением в трёх местах), то есть подход никуда не годится.

Мы вообще не знаем, что там делает этот запрос. По сути мы поняли, что самого запроса API мало.

Сделаем промежуточный вывод:

АPI это простой запрос например передача имени пользователя, если мы написали модель джанго, пользователь зарегистрировался, потом скачал мобильное приложение и о, ужас, и тут его имя работает и входит он по нему (конечно + пароль)

это было передано через API.

REST FULL API

Нам нужно больше информации, иными словами нам нужен интерфейс, давайте посмотрим на это:

Метод запроса, например, GET

  • Путь запроса, например, /object/list
  • Тело запроса, например, форма
  • Код ответа, например, 200 ОК
  • Тело ответа, например, данные в формате JSON

Ситуация меняется кардинально, когда мы добавляем другие данные необходимые нам для понимания, как работает наше API, мы добавляем дополнительные данные. Как в коде выше, сам запрос, например GET (то есть видимая страница со строкой отображения в браузере), тело, что передаём, например форму, убеждаемся, что сервер работает нормально, получаем код 200 и каким образом передаём данные через json, теперь легче будет понять, что делать или что идёт не так.

Подведёи итог.

REST FULL API — это когда мы берём API запрос в данном примере это GET и добавляем дополнительные условия, форма, ответ сервера их может быть больше. Это больше похоже на интерфейс, то есть мы добавляем конкретные правила работы с сервером.

В джанго с этим очень круто обстоит дело:

https://docs.djangoproject.com/en/4.2/ref/request-response/#django.http.HttpRequest.META

Тепереь мы видим ответ на вопрос.

Так чем же занимаются эти ребята, которые делают целые фреймфорки по работе с API,

например

Платформа Django REST — это мощный и гибкий набор инструментов для создания веб-API.

https://www.django-rest-framework.org/

А этим и занимаются, что бы мы могли использовать простые уже написанные функции и сделать очень крутые API, что бы эти API были нам понятны и мы понимали что делать и что от этого ожидать.

Таким образом мы создаём архитектуру нашего API и при этом уже готовы функции, например:

https://www.django-rest-framework.org/api-guide/authentication/

Аутентификация должна быть подключаемой.

Джейкоб Каплан-Мосс, «Худшие практики REST»

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

Дальше мы можем уже заняться создание интерфейса, то есть добавлять конкретные разрешения

https://www.django-rest-framework.org/api-guide/permissions/

Пример:

Разрешения в среде REST всегда определяются как список классов разрешений.

Перед запуском основной части представления проверяется каждое разрешение в списке. Если какая-либо проверка разрешений завершится неудачно, будет выдано исключение exceptions.PermissionDeniedили exceptions.NotAuthenticated, и основная часть представления не запустится.

Если проверки разрешений не пройдены, будет возвращен ответ «403 Запрещено» или «401 Несанкционировано» в соответствии со следующими правилами:

  • Запрос был успешно аутентифицирован, но в разрешении было отказано. — Будет возвращен ответ HTTP 403 Forbidden.
  • Запрос не был успешно аутентифицирован, а класс аутентификации с наивысшим приоритетом не использует WWW-Authenticateзаголовки. — Будет возвращен ответ HTTP 403 Forbidden.
  • Запрос не был успешно аутентифицирован, а класс аутентификации с наивысшим приоритетом использует заголовкиWWW-Authenticate . — Будет возвращен ответ HTTP 401 Unauthorized с соответствующим заголовком.WWW-Authenticate

О моей системе обучения программированию:

Моя система обучения эффективна тем, что я предложил вариант обучения по которому студент изучает то, что потом использует в любых языках и таким образом растёт уже постоянно и становится профессиональней.

Переосмыслите. Человек учит не язык, а изучает подход и принципы программирования, которые работают в любых языках программирования.

Мой подход ничего общего не имеет в том понимании, что — это изучение языка. Если проще, я учу плавать.

Большинство людей были на курсах. Где их научили копировать код и довольствовали простым объяснениям - этот код делает это и это.

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

В моём понимании программист, человек владеющий подходом(не языком, знание языка программирования — это один из побочных эффектов моей системы обучения), для разработки и способный спланировать и вести эту разработку в разных направлениях на разных языках.

То что описано в этой статье и есть разработка(очень маленькая часть). Где программист думает на всех этапах и знает что делать.

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

Давайте пробежимся по эффективности применения моей системы. Именно это делает реальностью любому человеку погрузится в сложные проекты и главное знать точно. Что получится. Потому что опора на знания и навыки.

Вот ссылка 1:

https://spb-tut.ru/

вот ссылка 2:

https://spb-tut.ru/bov/opportunity/

Я перечислю некоторые принципы основные, на все не хватит времени:

  1. Навык, который делает программиста программистом(ещё не разработчиком) — это чтение кода, он пишет код. Обратите внимание читая мои материал порядок имеет значение. Посмотрите ниже в любом языке. Вы найдёте две вещи документацию и исходный код.

Второй принцип понятен, чтение документации.

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

То есть человек меняет подход и принимает решение это сделать главным.

Прочтите это:

https://spb-tut.ru/reviews-spb/%D1%85%D0%BE%D1%82%D0%B5%D0%BB-%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D0%BE%D1%82%D0%B7%D1%8B%D0%B2-%D0%BE-%D1%88%D0%BA%D0%BE%D0%BB%D0%B5-%D0%B0-%D1%82%D0%BE%D1%87%D0%BD%D0%B5%D0%B5-%D0%BE-%D0%B5%D0%B5-%D0%BF%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D1%81%D1%82%D0%B8/

и это:

https://spb-tut.ru/reviews-spb/%D1%81%D0%BF%D0%B0%D1%81%D0%B8%D0%B1%D0%BE-%D0%B2%D0%B0%D0%BC-%D0%B7%D0%B0-%D0%BE%D1%82%D0%BB%D0%B8%D1%87%D0%BD%D1%8B%D0%B5-%D1%83%D1%80%D0%BE%D0%BA%D0%B8-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BD%D0%B0-%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D1%83%D1%8E-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%83-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D0%BA%D0%BE%D0%B4%D0%BE%D0%BC/

Давайте применим эти знания для разработки:

Мы когда пишем функция, то указываем request

def detail(request):

………………………………..

Так проще всего прежде чем приступить в кплаированию API, а что джанго имеет на сразу и видим

строка 64

https://github.com/django/django/blob/main/django/http/request.py

self.GET = QueryDict(mutable=True)

self.POST = QueryDict(mutable=True)

self.COOKIES = {}

self.META = { здесь штук 20 можно вставить}

self.FILES = MultiValueDict()

Язык сам говорит, что главное в нем нужно понять, откройте ещё раз этот файл и вы увидите везде def,,,,,def,,,,def

https://github.com/django/django/blob/main/django/http/request.py

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

Сходить на рыбалку, комплексное действие.

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

Значит можно вывести систему работы с кодом.

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

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

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

Вставил кусочек, для новичков. Что бы могли сравнить что они делают.

Вернём к нашей разработке с питон, dart, django, flutter и конечно же там будет и Ajax и json

Если Вы внимательно читали статью, то заметили, что всё взаимосвязано, то есть нужно написать профиль, понимать. Как мы будем добавлять приложения, потом написать мобильное приложение, в процессе разработать интерфейсы RestFullAPI.

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

Вот как это выглядит у учеников, Катя пишет:

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

Теперь смотрите никаких чудес не будет происходит, Кате предстоит на практике реализовать подход к разработке, который описан коротко в этой статье, но у неё уже есть ключ, система работы с исходным кодом и документацией.

Она не будет делать ничего нового в плане того. Что она делает. Она так же будет использовать свою систему работы с кодом. Просто изучит веб, но ведь все из чего состоит этот код. Она знает, будут новыми только понятия API, а сами запросы будут писать при помощи функций. Которыми она прекрасно владеет.

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

Поэтому я ранее объяснял, что я не учу программированию, я учу подходу к разработке или проще человек получает ключ к разработке и он заключается в том. Что он понимает исходный код и умеет его соединить с документацией, так же он именно из исходного кода берёт идеи. Как лучше написать.

И конечно с такой системой работы с кодом можно смело приступать к разработке. Которая описана здесь.

И тогда получается, что Катя будет делать то. Что делает, но только в Джанго, потом в Flutter, Toga и так далее , такой подход позволяет уже стать разработчиком, то есть, как описал в статье учитывать разные условия одновременно.

Если вам удалось понять, что развивать нужно не язык. А подход к языку, то уже прочли не зря.

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

И стать участником. Овладеь эффективной системой работы с кодом и применять её на практике и вырасти в высококласного разработчика. Это статья уже показывает первые шаги, как думать, в каком направлении двигаться и откуда начать:

https://dev-hackers.ru/

Ну а кто с нуля, то вот отсюда начать, там найдёте супер предложение(комплексное)

https://spb-tut.ru/programming_school/payment-for-lessons-dev-hackers/

Спасибо за доверие.





Вcе записи подраздела.


Сейчас вы проходите урок:
Мы легко можем использовать Django с REST API в качестве бэкэнда к для мобильного приложения Flutter

<< Назад  |  Далее >>


Все уроки с тегом:  DRF