Бэкэнд на джанго: Бэкенд на Django и фронтенд на React: пишем приложение

как написать database backend? / Хабр

Здравствуйте, дорогие бэкенд-разработчики на Python, у меня опять статья про django. И так будет до тех пор, пока в нём не появится нормальная поддержка асинхронности (шучу).

Вопреки распространённому мнению, что django — это фреймворк «с батарейками», но не очень поддающийся кастомизации, это не так. Необходимость поддержки разных провайдеров, поддержка так называемого multi-db (одновременное использование нескольких баз), да и просто банальное использование здравого смысла (местами) — сделало этот фреймворк одним из наиболее расширяемых среди ORM.

В этой статье я расскажу, как устроен database backend — это та штука, которая отвечает за поддержку конкретной базы данных и конкретного драйвера для неё. Я сделаю это на довольно экзотическом примере: мы с вами добавим поддержку асинхронного драйвера — psycopg3. Да, для постгрес — иначе причём здесь были бы слоны? Да, асинхронного. Или вы думаете, что django так не умеет? Читайте и убедитесь сами.

В общем, интрига — это не мой конёк, так что хочу сразу рассеять весь туман над асинхронностью. Дело в том, что я использую похожий подход, что и sqlalchemy, именно — greenlet. Я уже писал о нём на хабре, также об этом можно прочитать здесь. В общем, это такая древняя магия, которую поставили на службу производству.

Так вот, в силу этого выбранного подхода, написание бэкенда для асинхронного драйвера не очень уж отличается от написания оного для синхронного случая. В качестве драйвера я выбрал psycopg3: у него более дружелюбный API, близкий к DB-API2. Одиозный же asyncpg не следует ему совершенно, хотя по производительности и выигрывает. Кстати, упомянутый подход с гринлетами позволяет сделать асинхронный драйвер тоже совместимым с DB-API2 — что я и сделал.

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

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

with connection.cursor() as cursor:
    # use cursor

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

Кстати, с названиями в django есть явная путаница. Вот, например, как получить дефолтный коннекшн? Вы, возможно, думаете, что так:

from django.db import connection, connections
connection              # <- это прокси-объект
connections['default']  # <- вот к этому

Так вот, ничего подобного, это database backend, а не коннекшн. Сам коннекшн находится в одноимённом атрибуте:

connection.connection

Так что, не перепутайте. Ещё встаёт вопрос об автокоммите. Дело в том, что, если мы всегда берём коннекшн на время и точно знаем, когда мы его отдадим, то зачем нам автокоммит? Мы гарантированно сможем сделать коммит сами. Вообще, мне кажется, автокоммит — одна из неудачных идей в django.

В общем, об этом, наверно, можно говорить ещё долго, а у нас есть репозиторий с кодом — вот он. В директории pgbackend лежит — Вы, наверно, догадываетесь, что. В директории proj — тестовый проект django, в kitchen — тестовый django-app.

Код рабочий — можете запустить и проверить, в README есть инструкции. Извиняйте,что в зависимостях для django указан гит-репозиторий — дело в том, что нужна ветка с поддержкой psycopg3, а её ещё не вмерджили в main (но скоро вмерджат!)

Так вот, если Вы не догадались, директория pgbackend — это наш бэкенд. Мало-мальски продвинутые джангонавты знают, что там нужно искать модуль base — он там есть. Открыв его, вы увидите, что он почти пуст: прописан ops_class, в котором указан модуль с «компиляторами», в конструкторе происходит создание коннекшна — и больше ничего.

Отлично, если в модуле base.py почти ничего нет — смотрим, есть ли где-нибудь что-нибудь ещё.

Я упомянул компиляторы. Если что, они «компилируют» query в SQL. Компиляторы — один из основных способов кастомизации бэкенда. Вообще, по секрету, весь бэкенд — это всего один метод в компиляторе — execute_sql. Так что, вообще говоря, заменить бэкенд достаточно легко — нужно заменить эту единственную функцию. На самом деле, компилятор не один, а на каждый тип запроса свой — для SELECT, INSERT, UPDATE и DELETE. Но это уже частности — в целом, бэкенд, как я уже говорил, легко поддаётся расширению. А за то, что, по сути, нужно переопределять всего одну функцию — плюсы в карму разработчикам django.

Раз я уже начал говорить про компиляторы — скажу об изменениях, которые там потребовались. В общем, есть в django такая фича, как QuerySet. iterator() — поддержка server-side cursors. Она позволяет отдавать результаты запроса (и выполнять его — тоже) по частям, чанками. Это может пригодиться, например,если результат запроса не помещается в память. Для пагинации использовать это вряд ли разумно, учитывая, что мы занимаем целый коннекшн на неопределённое время.

Так вот, я решил, что эта фича ни зачем не нужна, и решил её не поддерживать. По завершении execute_sql() я просто закрываю курсор и возвращаю коннекшн в пул. В общем, я уже сомневаюсь: скорее всего, я был неправ. Скорее всего — верну эту фичу на место.

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

Транзакции в django не очень предназначены для переопределения в бэкенде: это обычная функция atomic и класс Atomic. Всё равно, это не стало большим препятствием: посмотрите модуль patches — узнаете, почему.

Возможно, если поискать, то найдутся ещё интересные моменты. Ну, а в остальном — скучный кодинг, что тут рассказать?

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

Веб-фреймворк Django (Python) — Изучение веб-разработки

Django является чрезвычайно популярным и полнофункциональным серверным веб-фреймворком, написанным на Python. Данный модуль расскажет о том, почему Django один из самых популярных серверных веб-фреймворков, как установить среду разработки, и как начать использовать его для создания собственных веб-приложений.

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

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

Примечание: Python является одним из самых доступных в чтении и понимании для новичков языком программирования. Тем не менее, если вы захотите глубже понять этот модуль, в Интернете сейчас доступны многочисленные бесплатные книги и учебные пособия (новички в программирование возможно захотят посетить Python for Non Programmers на вики-страницах python.org).

Введение в Django

В этой первой статье по Django мы ответим на вопрос «Что такое Django?» и сделаем обзор того, что делает этот веб-фреймворк особенным. Мы кратко рассмотрим основные особенности, включая некоторую продвинутую функциональность, на которой у нас не будет возможности подробно остановиться в этом модуле. Мы также покажем вам некоторые из основных строительных блоков приложения Django, чтобы дать вам представление о том, что он может сделать, прежде чем вы перейдёте к установке и начнёте экспериментировать.

Установка среды разработки Django

Теперь, когда вы знаете, что такое Django, мы покажем вам, как установить и протестировать среду разработки Django для Windows, Linux (Ubuntu) и Mac OS X — какую бы операционную систему вы не использовали, эта статья должна дать вам понимание того, что вам потребуется, чтобы начать разработку Django-приложений .

Учебник Django: Веб-сайт местной библиотеки

Первая статья в нашей серии практических уроков объясняет, что вы узнаете, и представит обзор веб-сайта «местной библиотеки», над которым мы будем работать и развиваться в последующих статьях.

Учебник Django часть 2: Создание скелета веб-сайта

В этой статье показано, как вы можете создать проект веб-сайта «каркас» в качестве основы, после чего вы сможете заполнить параметры сайта, urls, модели, представления и шаблоны.

Учебник Django часть 3: Использование моделей

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

Учебник Django часть 4: Django admin веб-сайта

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

Учебник Django часть 5: Создание главной страницы

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

Учебник Django часть 6: Общий список и подробные представления

Это руководство расширяет наш сайт местной библиотеки, добавляя список и подробные страницы для книг и авторов. Здесь мы узнаем об общих представлениях на основе классов и покажем, как они могут уменьшить количество кода, который вы должны писать для случаев общего использования. Мы также перейдём к обработке URL-адресов более подробно, покажем, как выполнить базовое сопоставление шаблонов.

Учебник Django часть 7: Структура сессий

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

Учебник Django часть 8: Авторизация и права пользователей

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

Учебник Django часть 9: Работа с формами

В этом уроке мы покажем вам, как работать с HTML Forms в Django, и в частности, самый простой способ писать формы для создания, обновления и удаления экземпляров модели. В рамках этой демонстрации мы расширим сайт местной библиотеки, чтобы библиотекари могли вносить новые книги, создавать, обновлять и удалять авторов, используя наши собственные формы (а не использовать приложение администратора).

Учебник Django часть10: Тестирование веб-приложения Django

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

Учебник Django часть 11: Деплой Django на продакшн

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

Безопасность веб-приложений Django

Защита пользовательских данных является неотъемлемой частью любой разработки сайта. Ранее мы объяснили некоторые из наиболее распространённых угроз безопасности в статье Web security — Эта статья даёт практическую демонстрацию того, как встроенные средства защиты Django справляются с такими угрозами.

Следующее задание проверит ваше понимание того, как создать сайт с помощью Django, как описано в руководствах, перечисленных выше.

DIY Django мини-блог

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

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

Want to get more involved?

Learn how to contribute.

This page was last modified on by MDN contributors.

Django Tutorial: The Ultimate Guide (2022)

Это наиболее полное онлайн-руководство по платформе Django.

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

С Джанго есть только один способ сделать что-то — «Путь Джанго».

Да, Django создан, чтобы заставить вас следовать стандартным способам разработки веб-приложений.

Преимущество этого заключается в том, что работа с Django сделает вас лучшим разработчиком.

Недостатком является то, что он не дает возможности для некоторой гибкости с дочерним фреймворком Flask.

В этом учебном пособии Django вы узнаете о платформе Django, создав базовое веб-приложение Todo, которое может создавать, читать, обновлять и удалять, иначе называемое «CRUD».

Чтобы подробно изучить Django, нет лучшего курса, который можно порекомендовать лично, чем Полная веб-разработка и искусственный интеллект с помощью Python (Django). Проверьте это сейчас для скидки.

Предпосылки

Прежде чем продолжить работу с этим руководством, вам необходимо понять веб-программирование на стороне сервера, фреймворки, а также общие знания о Python, которые помогут вам понять фреймворк Django.

Чтобы подробно изучить Python и Django, нет лучшего курса, который можно порекомендовать лично, чем Python Django 2021 — Complete Course. Проверьте это сейчас для скидки.

Внешний вид

Ниже представлены разделы:

Django: полный обзор

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

Так что берите чашку кофе и присоединяйтесь к нам в этом прекрасном и плавном путешествии.

Что такое Джанго

Django — это высокоуровневая веб-инфраструктура Python MVT с открытым исходным кодом, которая позволяет быстро разрабатывать безопасные и удобные в обслуживании веб-приложения.

Django использует популярную архитектуру MVC (Model View Controller) с небольшими изменениями. В то время как MVC расшифровывается как Model View Controller, Django MVT расшифровывается как Model View Template.

Когда дело доходит до использования Django в качестве предпочтительной платформы, есть только один способ сделать что-то — «Путь Django». Он поддерживает стандартизованный в отрасли способ разработки надежных веб-приложений.

Особенности Джанго

Прежде чем выбрать какой-либо фреймворк для своего проекта, вы должны его изучить и быть довольным его возможностями. Django — это фреймворк с яркими и привлекательными функциями. Давайте изучим их.

  1. Отличная интерактивная документация Django позволяет любому новому разработчику легко и увлекательно выбрать проект и завершить его в рекордно короткие сроки.
  2. Django — это фреймворк, построенный на Python. Будучи самым простым языком программирования с многочисленными пакетами и библиотеками, вы можете быстро создавать веб-сайты, веб-приложения, проекты по обработке данных, машинному обучению и искусственному интеллекту, используя Django и другие пакеты Python.
  3. Django по умолчанию оптимизирован для поисковых систем.
  4. Высокая масштабируемость. Команда Instagram, разработавшая популярный Instagram с использованием Django, должна быстро рассказать вам, что вы можете делать с Django.
  5. Django универсален
  6. Он хорошо защищен.
  7. Благодаря более чем десятилетнему стабильному функционированию и стабильной работе Django тщательно протестирован.
  8. Django обеспечивает быструю разработку.
  9. Он поставляется с предварительно созданной административной областью. Эта функция означает, что вам не обязательно создавать новую административную область для управления вашим веб-приложением.

Зачем вам изучать Django

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

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

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

Итак, если вашему приложению требуются функции ML, AI, Analytics или Data Science, вам следует использовать Django.

При изучении любого языка невозможно переоценить важность сообщества.

К счастью, Django может похвастаться активным сообществом, которое поможет вам стать профессиональным разработчиком программного обеспечения.

Если вы хотите создавать сложные веб-приложения за меньшее время с использованием лучших отраслевых практик, Django — это лучший фреймворк Python.

От довольно сложной версии Django 1.0 до сегодняшней простой и элегантно выглядящей версии Django 3.0+ мы наблюдали постоянный рост в разработке и поддержке среды Django.

Ключевые особенности и функции, которые делают Django выдающимся:

  • Открытый исходный код.
  • Поддерживает Full Stack Framework.
  • Аутентификация.
  • URL-маршрутизация.
  • Механизм шаблонов.
  • СУХОЙ (не повторяйтесь).
  • Картографы ORM.
  • Он обеспечивает миграцию схемы базы данных для распространенных баз данных, таких как PostgreSQL, MySQL, SQLite, Oracle, под сторонними драйверами.
  • Вариант архитектуры MVC под названием MVT
  • Встроенная панель администратора
  • Отличный и быстрый интерфейс отладчика
  • ASGI (асинхронный интерфейс шлюза сервера) и WSGI (интерфейс шлюза веб-сервера, совместимый с Django 3.0+
  • La0 REvel

9 SO отношение один к одному с примером

Вау! Теперь у вас есть полный обзор того, что означает Django и что вы можете с ним делать.

Вы можете сделать небольшую паузу, сделать глоток кофе и следовать за нами, пока мы более подробно обсуждаем Django Framework.

Глава 2. Платформа Django

До сих пор модным словом здесь было «Framework». Но что означает фреймворк? Нет сомнений в том, что мы могли бы использовать это слово, не понимая его значения и того, почему мы должны его использовать.

По словам Исаака Ньютона, «если я и видел дальше, то потому, что стоял на плечах гигантов».

Эта цитата Исаака Ньютона проливает свет на то, насколько далеко и мощными могут быть фреймворки. Зачем изобретать велосипед, если можно покататься на нем и добавить больше функций?

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

Перед вами два варианта:

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

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

В этом разделе мы обсудим три основные части фреймворка. Это называется MVT, что означает шаблон представления модели.

Вы готовы? Пожалуйста, пристегните ремень безопасности. Мы отправимся в увлекательное путешествие.

Что такое МВТ?

MVT означает шаблон представления модели. Это вариант программного обеспечения и шаблона проектирования MVC (контроллер представления модели).

MVC — это стандартный архитектурный шаблон, который используется во многих языках с небольшими вариациями, такими как Laravel, Ruby on rails, AdonisJS и т. д.

Платформа Django самостоятельно обрабатывает все части контроллера MVC. Это означает, что Django проделал за вас большую часть тяжелой работы и помогает сократить код, необходимый для создания минимально жизнеспособного продукта (MVP).

Это заставило Django представить и реализовать шаблоны как шаблон. Кратко остановимся на них отдельно.

Модель

Модели в Django — это единственный достоверный источник информации о ваших данных. Как правило, каждая модель сопоставляется с одной таблицей базы данных. Это помогает обеспечить интерфейс для данных, хранящихся в базах данных.

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

Вид

Определения представлений Django несколько не просты для понимания.

Итак, мы попытаемся объяснить, что он делает, чтобы нетехнический человек мог легко это понять.

Думайте об этом как о файле, в котором вы пишете функции, которые извлекают данные из базы данных и отображают их в шаблонах вашего веб-сайта.

При таком объяснении представлений Django можно сказать, что он предоставляет динамическое содержимое для файлов HTML/CSS/Javascript и своего языка шаблонов.

При этом шаблон Django полностью представляет статическую часть. Далее давайте обсудим последнюю часть архитектуры Django MVT.

Шаблон

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

Опять же, чтобы упростить понимание, ваш шаблон будет содержать язык шаблонов HTML, CSS, Javascript и Django.

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

Маршрутизация URL: Аналогия запросов и ответов

Глава 3. Создание веб-приложения Todo с помощью Django

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

.

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

Рекомендуется разрабатывать приложение в виртуальной среде. Мы использовали Virtualenv. Приведенный ниже код поможет вам установить его.

 Пип установить виртуалэнв 

Далее следует создать виртуальную среду.

 виртуальный вирт
source virt/Scripts/activate # это активирует виртуальную среду. 

Другие пакеты:

 pip установить джанго
pip установить mysqlclient 

Запустите проект Django с помощью следующей команды.

 django-admin startproject mytodo 

Перейдите в созданный проект с помощью cd mytodo . Это корневой каталог вашего приложения.

Создать приложение задачи

На изображении выше показана структура проекта Django. Теперь давайте создадим приложение.

 задача запуска python manage.py 

После запуска нового приложения структура нового проекта будет выглядеть так:

Добавьте задачу приложения в файл settings. py .

 # Определение приложения
 
УСТАНОВЛЕННЫЕ_ПРИЛОЖЕНИЯ = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'задача'
] 

База данных настроена

Все еще в этом файле, вспомните, что мы установили mysqlclient ранее, мы сделали это, потому что мы будем использовать MySQL для нашей базы данных.

ТАКЖЕ ПРОЧИТАЙТЕ  Backend-разработка: руководство для начинающих по Backend-разработке

Теперь перейдите в свой PHPMyAdmin или любой другой клиент базы данных по вашему выбору и создайте базу данных.

 БАЗЫ ДАННЫХ = {
    'по умолчанию': {
        «ДВИГАТЕЛЬ»: «django.db.backends.mysql»,
        «ИМЯ»: «todoapplication»,
        «ПОЛЬЗОВАТЕЛЬ»: «корень»,
        'ПАРОЛЬ': 'пароль',
        «ХОСТ»: «локальный хост»,
        «ПОРТ»: «3306»,
    }
} 

Пришло время создать нашу модель. Давайте перейдем в нашу папку задач, откроем Models.py и вставим код ниже.

 из моделей импорта django.db
 
# Создавайте свои модели здесь.
 
задача класса (модели.Модель):
    название = модели.CharField(max_length=200)
    завершено = models.BooleanField (по умолчанию = False)
    создано = модели.DateTimeField (auto_now_add = True)
 
    защита __str__(я):
        вернуть self.title 

Это простая модель с именем класса «Задача». Он имеет три атрибута и метод.

Название задачи, логическое поле «завершено» и время создания.

Метод используется для отображения заголовка в админке приложения.

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

Прежде чем мы выполним первоначальную миграцию, важно убедиться, что папка миграции и файл __init__.py пусто.

Запустите эту команду, чтобы создать миграции для вашей базы данных:

 python manage. py makemigration 

Это покажет все файлы, доступные для миграции, где нет изменений, это будет указано.

Когда вы выполняете миграцию, Django подготавливает для вас файл миграции, как указано выше,

Запустите эту команду, чтобы перенести базу данных:

 python manage.py миграция 

Создать файлы задач

Перейти к задаче и создайте следующие папки «templates», внутри папки templates создайте «task». Затем создайте следующие файлы HTML.

Откройте файл views.py в папке task и вставьте этот код ниже:

 #views.py
из django.shortcuts импортировать рендер, перенаправлять
из django.http импорт HttpResponse
 
из импорта .models *
из импорта .forms *
 
# Создайте свои представления здесь.
Индекс защиты (запрос):
    задачи = Задача.объекты.все()
 
    форма = ЗадачаФорма()
 
    если request.method == 'POST':
        форма = TaskForm(запрос.POST)
        если form. is_valid():
            форма.сохранить()
        вернуть перенаправление ('/')
 
    контекст = {'задачи': задачи, 'форма': форма}
    вернуть рендеринг (запрос, 'задача/список.html', контекст)
 
 
def updateTask (запрос, pk):
    задача = Task.objects.get(id=pk)
 
    форма = TaskForm (экземпляр = задача)
 
    если request.method == 'POST':
        форма = TaskForm (запрос.POST, экземпляр = задача)
        если form.is_valid():
            форма.сохранить()
            вернуть перенаправление ('/')
 
    контекст = {'форма': форма}
 
    вернуть рендеринг (запрос, 'задача/обновление.html', контекст)
def deleteTask (запрос, pk):
    элемент = Task.objects.get(id=pk)
 
    если request.method == 'POST':
        элемент.удалить()
        вернуть перенаправление ('/')
 
    контекст = {'элемент': элемент}
 
    вернуть рендеринг (запрос, 'задача/удалить.html', контекст)
 

Далее идет urls.py , но приложение не поставляется с urls.py , потому что мы можем выполнять всю маршрутизацию в urls. py проекта или можем создать новый для папка задача . Давайте создадим его:

 # задача.urls.py
из пути импорта django.urls
от . импорт просмотров
 
URL-шаблоны = [
    путь('', views.index, имя='список'),
    path('update//', views.updatingTask, name='update'),
    path('удалить//', views.deleteTask, name='удалить'),
] 

Чтобы проект Django увидел его, его необходимо перенаправить на URL-адреса проекта. Сделаем так:

 # urls.py
из администратора импорта django.contrib
из пути импорта django.urls
из импорта django.urls.conf включить
 
URL-шаблоны = [
    путь('admin/', admin.site.urls),
    путь('', включить('task.urls'))
]
 

Здесь мы только что импортировали имя модуля , включая , чтобы помочь нам включить URL-адреса приложений.

Далее, давайте создадим form.py :

 из форм импорта django
из django.forms импортировать ModelForm
 
из импорта .models *
 
 
класс TaskForm(forms. ModelForm):
 
    Мета класса:
        модель = задача
        поля = '__all__'
  

Зарегистрируйте модель в вашем admin.py :

 от администратора импорта django.contrib
из .models импортировать задачу
# Зарегистрируйте свои модели здесь.
 
 
admin.site.register(Задача) 

Последний путь - это наши файлы HTML:

Список.html

 # список.html

 
<стиль>
    тело {
        ширина: подгонка содержимого;
        поле: 20px авто;
    }

 
<дел>
    

Все дела

<метод формы="POST" действие="/"> <дел> {% csrf_token %} {{form.title}} {% если форма.заголовок %} {% еще %} {{форма.полная}} {% конец%}
{% для задачи в задачах %} <дел> {% если task. complete == True %} {{ задача }} {% еще %}

{{задача}}

{% конец%} <дел> Обновить Удалить
{% конец для %}

Update.html

Далее давайте обновим update.html , вставив следующий код:

 # update.html

 
<стиль>
    тело {
        ширина: подгонка содержимого;
        поле: 20px авто;
    }
 
    форма {
        поле: 0 5px;
    }

 

Обновить задачу

<метод формы="POST" действие=""> <дел> {% csrf_token%} {{ форма }}

Удалить.html

Наконец, давайте обновим detele.html , вставив следующий код:

  cloudflare.com/ajax/libs/semantic-ui/2.4.1/semantic.min.css" />
 
<стиль>
    тело {
        ширина: подгонка содержимого;
        поле: 50px авто;
    }
 
    форма {
        поплавок: справа;
    }

 

Вы уверены, что хотите удалить " {{item}}"?

<дел> Отмена <метод формы="POST" действие=""> {% csrf_token%}

Все в порядке, запускаем нашу миграцию:

 python manage.py миграция 

Тестирование приложения

А также запустить сервер разработки этой командой:

 сервер запуска python manage.py 

Ваше приложение должно работать на http://127.0.0.1:8000/. Если вы перейдете по URL-адресу, вам должна быть представлена ​​веб-страница ниже, если вы все настроили правильно.

ТАКЖЕ ПРОЧИТАЙТЕ  Разница между self::, static:: и parent:: в PHP

Глава 4: Развертывание на Heroku

Heroku — компания, предоставляющая облачные услуги, которая поддерживает множество веб-фреймворков.

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

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

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

Введите heroku –version , чтобы проверить успешность установки.

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

Теперь нам нужно создать Procfile. Перейдите в корневую папку и создайте ее.

 сенсорный профайл 

Откройте его и введите:

 веб-сайт: gunicorn richestmen.wsgi 

Это название нашего проекта. Сохраните и закройте его. Тем не менее, создайте файл requirements.txt (если вы его не создали). Этот файл создаст список всех установленных библиотек.

 Заморозка пипса > requirements.txt 

Давайте перейдем к settings.py , чтобы внести некоторые важные изменения. Прокрутите вниз до MIDDLEWARE и добавьте whitenoise в список промежуточного ПО.

Затем прокрутите вниз до конца файла settings.py и добавьте белый шум в качестве хранилища staticfile . Whitenoise позаботится о статических файлах.

Мы избегали использования статических файлов (CSS/Javascripts/Images) в этом проекте, но мы покажем вам, как включить их в settings.py .

Наконец, в файл settings.py добавьте эту строку кода как последний код. Это активирует Django-Heroku

.

 django_heroku.settings(местные жители()) 

Пожалуйста, в том же settings.py , прокрутите туда, где вы найдете 

 ОТЛАДКА = Истина 

Установите значение

.

 ОТЛАДКА = Ложь 

Прежде чем мы войдем в Heroku, нам нужно нажать на GitHub. Войдите в свою учетную запись GitHub, создайте репозиторий для этого приложения и отправьте свое приложение на GitHub.

В терминале введите:

 логин героку 

Следуйте инструкциям и войдите в систему, затем вернитесь к своему терминалу (CTRL+C для продолжения)

 heroku create myrichestmen <Любое имя по вашему выбору> 

Это имя, которое мы дали приложению. Теперь вы можете просмотреть приложение в своей учетной записи Heroku.

 мастер git push героку
# эта команда отправит код из вашей основной ветки вашего git на пульт Heroku. 

Нам нужно скопировать URL-адрес приложения из терминала или настроек Heroku.

Затем перейдите к нашему settings.py , перейдите к ALLOW_HOSTS и добавьте URL-ссылку в список URL-адресов, которым разрешен доступ к вашему веб-сайту.

Также импортируйте следующие файлы:

 Импорт ОС
Импорт django_heroku 

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

Поскольку мы развертываем, нам нужно создать базу данных MySQL в Heroku и изменить детали базы данных в нашем settings.py перед развертыванием.

Давайте так:

Войдите в свою учетную запись Heroku через браузер, нажмите на созданное вами приложение,

Нажмите на вкладку Ресурсы , найдите ClearDB . Это надстройка, которая поможет вам установить и использовать MySQL с вашим приложением в Heroku.

Выберите ignite, бесплатную базу данных MySQL. Heroku запросит вашу кредитную карту. Они не будут взимать с вас плату, пока вы не перейдете на платные услуги.

Нажмите на ClearDB MySQL, и откроется новое окно. Нажмите на обведенную ссылку.

Это для того, чтобы вы увидели, что он создан. Затем вернитесь в Heroku, нажмите «Настройки».

Затем Config Vars покажет информацию о вашей базе данных MySQL.

Щелкните и скопируйте информацию над ЗНАЧЕНИЕ и следуйте иллюстрации на диаграмме ниже.

Хммм!

Не волнуйтесь. Мы почти на месте. Сохраните и закройте файл. В вашем терминале:

 git добавить .
git commit –m «база данных обновлена»
git push геройку мастер 

Это обновит ваше приложение онлайн. Теперь нам нужно перенести наше приложение в базу данных.

 heroku запустить python manage.py мигрировать 

Введите heroku open , чтобы открыть приложение.

Справочные ссылки:

Джанго с наукой о данных

https://devcenter.heroku.com/articles/heroku-cli

https://docs.djangoproject.com/en/3.2/

https://devcenter.heroku.com/articles/cleardb

https://www.chartjs.org/docs/latest/

Пошаговое руководство по развертыванию приложения Django с помощью Heroku бесплатно

Заключение

В этом руководстве по Django объясняются основы создания приложения с помощью Django с использованием представлений на основе функций Django, базы данных MySQL и развертывания в Heroku.

Это только основы Django. Их так много, и нет лучшего места, чем официальная документация Django.

Чтобы подробно изучить Django, нет лучшего курса, который можно порекомендовать лично, чем Полная веб-разработка и искусственный интеллект с помощью Python (Django). Проверьте это сейчас для скидки.

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

Спасибо

Готовое приложение https://dekingstodo.herokuapp.com/

Репозиторий Github: https://github.com/dekings44/billionaire

LinkedIn: www.linkedin.com/in/realdekings

Твиттер: @RealDekings

Носитель: https://dekings.medium.com/

10 основных преимуществ использования среды Django для серверной веб-разработки

Главной задачей веб-разработчиков является выбор правильной технологии. Несмотря на то, что в ближайшем будущем существует множество фреймворков, очень немногие подходят для конкретного варианта использования или бизнес-целей, таких как веб-разработка Python с использованием фреймворка Django. Когда дело доходит до серверной веб-разработки, легко найти подходящую компанию по веб-разработке Django, которая предлагает услуги разработки Django по доступной цене.

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

  1. Платформа веб-разработки Django проста

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

  2. Django работает на Python 

    Платформа Django основана на Python, который является динамическим языком программирования высокого уровня. Хотя трудно найти язык программирования, охватывающий большинство задач и проблем, разработка программного обеспечения Django подходит для большинства случаев использования. Фактически, с 2018 года Python остается одним из самых популярных языков, конкурируя с C++ и Java.

    Универсальность Python заключается в том, что его код можно переносить на разные платформы, от ПК, Linux до PlayStation. Будучи мультипарадигмальным, Python поддерживает объектно-ориентированное программирование, что упрощает кодирование и реализацию. Напоминая язык псевдокода, Python также более интерактивен, чем большинство других языков, и помогает вам сосредоточиться на решении задач, а не на синтаксисе.

    Разработка веб-приложений Python с помощью Django требует небольших усилий и более короткого кода. Python также имеет обширные библиотеки, которые упрощают изучение, внедрение и внедрение. Компании также предпочитают веб-разработку в Django, так как написание кода занимает меньше времени, что означает разработку проекта с меньшими затратами.
     

  3. Django с загруженными функциями

    Среда веб-разработки Django имеет все необходимое для разработки полноценного готового приложения, поскольку она использует подход Python «батарейки в комплекте». Поскольку все необходимое доступно, вам не нужно тратить часы на настройку фреймворка при разработке простого приложения или прототипа.

    Однако, если вам нужны дополнительные функции для создания более сложного приложения, для Django доступно более 4000 пакетов, которые охватывают отладку, профилирование и тестирование.

    Платформа Django также использует пакеты инструментов, которые позволяют разработчикам работать с передовыми технологиями, такими как искусственный интеллект (ИИ), машинное обучение и анализ данных. Кроме того, эти пакеты инструментов легко настроить и использовать в проектах, особенно для отраслей с большим объемом математических вычислений, таких как FinTech.
     

  4. Django экономит время

    Фреймворки для веб-разработки Django включают множество функций, которые делают их эффективными с точки зрения времени и затрат и наиболее подходящими для разработки MVP и прототипов. Django имеет гибкую и хорошо структурированную панель администратора, которая лучше, чем Laravel. Django также позволяет разработчикам повторно использовать код из других проектов. На самом деле, у него также есть библиотека многоразовых приложений, инструментов и функций.

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

  5. Django подходит практически для любого проекта

    Несмотря на то, что Django не является корпоративным решением, как Java или C#, он подходит практически для любого проекта, независимо от его размера. Например, если вы нанимаете компанию-разработчика Django для разработки веб-приложения для социальных сетей, Django может масштабироваться, чтобы обрабатывать как большой трафик, так и большие объемы данных. Даже если вы разрабатываете что-то более простое, например веб-сайт для публикации блога, Django снова станет отличным выбором, поскольку он предоставляет все необходимое для создания работающего приложения.

    Дополнительные преимущества, предлагаемые Django, которые делают его гибкой средой веб-разработки, включают его кросс-платформенную функцию, которая позволяет разработчикам создавать приложения, которые могут работать в Windows, macOS или Linux. ORM Django также позволяет разработчикам использовать несколько баз данных в одном проекте. Между базами данных легко переключаться с помощью одной строки кода.
     

  6. Django совместим с DRY и KISS 

    Поскольку Django основан на принципе DRY (не повторяйтесь), разработчик может легко использовать абстракции вместо часто повторяющихся шаблонов программного обеспечения или использовать нормализацию данных. Это уникальный способ избежать избыточности и ошибок.

    Среди многих общеупотребительных сокращений KISS обычно понимается как «Keep It Short and Simple». В терминологии Django это означает простой, легко читаемый и понятный код. Например, методы не должны превышать 40-50 строк.
     

  7. Django отличается высокой безопасностью и актуальностью

    Следуя последним тенденциям в области безопасности и разработки веб-сайтов, Django всегда поддерживает самые высокие стандарты. Django регулярно обновляется исправлениями безопасности, даже если вы используете более старую версию фреймворка. У Django есть версия LTS (долгосрочная поддержка).
     

  8. Django обладает обратной совместимостью

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

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

Использование методологии DevOps позволяет:

Django использует платформу REST для создания API-интерфейсов

Среди основных преимуществ использования Django для серверной веб-разработки является его среда Representational State Transfer (REST), которая является популярным набором инструментов для создания API. Мощь REST-фреймворка Django можно оценить по тому факту, что для создания готового к использованию API требуется всего три строки кода.

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

Проект Kellton Tech Django для американской страховой компании

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

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

После проведения начального анализа требований, когда наши знания и окончательный объем проекта выкристаллизовались, мы решили использовать фреймворк Django, так как это мощный инструмент на основе языка программирования Python, позволяющий создавать сложные веб-приложения.

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

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

This entry was posted in Лендинги