MorePath
MorePath – это структура Python WSGI, которая в первую очередь ориентирована на выполнение большего количества вариантов использования чисел. Кроме того, фреймворк отвечает за прикладное программирование набора ответов (ASAP). Он также включает стандартную структуру данных Python, созданную в веб-службах RESTful.
MorePath предоставляет важную функцию: автоматически преобразует определенные пути в платформе в ссылки для создания приложений с наиболее чистыми URL-адресами.
Ключевые особенности Morepath:
- Он предоставляет простые, гибкие и надежные разрешения.
- Позволяет создавать общий пользовательский интерфейс так же просто, как выделить подклассы.
- Все представления являются общими, повторно используются.
- Предлагает все необходимые инструменты для разработки веб-сервисов RESTful.
- Можно расширять с помощью простого, связного и универсального механизма расширения и отмены.
URL, представления (Views), модели (Models) и шаблоны (Templates)
В Django для оптимальной работы одной страницы требуется как минимум три (чаще четыре) файла. Внутри приложения этими файлами являются , , и HTML шаблон .
Работа в Django строится на взаимодействии упомянутых выше элементов, однако новичков такая система может легко запутать, поэтому будет лучше сперва разобраться с порядком HTTP запросов/ответов. При вводе определенного URL, например, , проект Django осуществляет попытку отыскать URL-паттерн, который бы соответствовал адресу домашней страницы. Данный URL-паттерн уточняет представление (view), которое определяет содержимое страницы (обычно на основании модели (model) базы данных) и в конечном итоге — шаблон (template) для стилей и базовой логики. Финальный результат отправляется пользователю назад в виде HTTP ответа.
Схему завершенного потока можно представить следующим образом:
Цикл работы Django запроса/ответа
Shell
URL -> View -> Model (обычно) -> Template
1 | URL->View->Model(обычно)->Template |
Для страницы может понадобится три или четыре файла, но их количество может различаться из-за модели, которая не всегда нужна, и в данном случае трех файлов будет достаточно. Однако для целостности картины в большинстве примеров будет использовано четыре файла.
Главная идея заключена в том, что представления Django определяют, какое содержимое отображается на странице, в то время как URLConfs отвечает за то, куда данное содержимое будет направлено. Модель включает в себя содержимое базы данных, а шаблон предоставляет стили.
Когда пользователь запрашивает некую страницу, например, домашнюю страницу, файл urls.py использует регулярное выражение для назначения данного запроса для подходящей функции представления, которая затем возвращает верные данные. Иными словами, наше представление выведет текст «Hello, World» в то время, как url должен будет убедиться в том, что во время всех визитов пользователя на домашнюю страницу отображаемое представление является верным.
Давайте посмотрим, как все работает. Для начала обновим файл в приложении :
Python
# pages/views.py
from django.http import HttpResponse
def homePageView(request):
return HttpResponse(‘Hello, World!’)
1 2 3 4 5 |
# pages/views.py fromdjango.http importHttpResponse defhomePageView(request) returnHttpResponse(‘Hello, World!’) |
По существу, здесь мы заявляем, что когда бы функция представления ни была вызвана, ответом будет текст «Hello, World!». Говоря точнее, мы импортируем встроенный метод , и поэтому можем вернуть ответный объект пользователю. Мы создали функцию под названием , которая принимает объект запроса и возвращает ответ в виде строки «Hello, World!»
Теперь нам нужно настроить все . Для этого в приложении создается новый файл .
Shell
(helloworld) $ touch pages/urls.py
1 | (helloworld)$touchpagesurls.py |
Затем обновляем его при помощи следующего кода:
Python
# pages/urls.py
from django.urls import path
from .views import homePageView
urlpatterns =
1 2 3 4 5 6 7 |
# pages/urls.py fromdjango.urls importpath from.views importhomePageView urlpatterns= path(»,homePageView,name=’home’) |
Верхняя строчка импортирует из Django для усиления нашего URL-паттерна, а следующая за ней строка импортирует представления. Обращаясь к файлу как мы просим Django обследовать текущую директорию в поисках файла views.py.
У нашего есть три составляющие:
- регулярное выражение Python для пустой строки ;
- отсылка к представлению под названием ;
- опциональный .
Другими словами, если пользователь запрашивает домашнюю страницу, представленную пустой строкой , тогда используется представление под названием .
На данный момент мы почти все разобрали. Последним шагом станет обновление файла . Для одного проекта Django, в данном случае , типично иметь сразу несколько приложений, и у каждого должен быть свой собственный URL.
Python
# helloworld_project/urls.py
from django.contrib import admin
from django.urls import path, include # новое добавление
urlpatterns = [
path(‘admin/’, admin.site.urls),
path(», include(‘pages.urls’)), # новое добавление
]
1 2 3 4 5 6 7 8 |
# helloworld_project/urls.py fromdjango.contrib importadmin fromdjango.urls importpath,include# новое добавление urlpatterns= path(‘admin/’,admin.site.urls), path(»,include(‘pages.urls’)),# новое добавление |
На второй строке возле мы импортировали , а затем создали новый URL-паттерн для приложения . Теперь любые визиты пользователя на домашнюю страницу вначале будут направлены к приложению , а затем к набору представления , что расположен в файле .
CubicWeb
Cubic Web – это полнофункциональный фреймворк, разработанный и курируемый Logilab, это бесплатный семантический веб-фреймворк с открытым исходным кодом, основанный на Python. Cubic Web основан на модели данных, и для разработки функционального приложения требуется, чтобы она была определена. Cubic Web использует куб, в то время как другое приложение использует отдельные представления и модели.
Ключевые особенности Cubic Web:
- Поддержка нескольких баз данных.
- Безопасность.
- Многоразовые компоненты.
- Упрощает запросы, связанные с данными, с помощью RQL.
- OWL (язык веб-онтологий).
Заключение
В этом руководстве мы упомянули все основные фреймворки Python, которые относятся к различным категориям. Разработчик может выбрать любой в соответствии с требованиями проекта.
Изучаю Python вместе с вами, читаю, собираю и записываю информацию опытных программистов.
Создание проекта ¶
Если вы впервые используете Django, вам придется позаботиться о первоначальной настройке. А именно, вы должны будете автоматически генерировать код , который устанавливает Django — набор настроек для экземпляра Django, включая конфигурацию базы данных, параметры Django-специфические и настройки конкретных приложений.
Из командной строки в каталог, в котором вы хотите сохранить свой код, затем выполните следующую команду:
/
Это создаст каталог в вашем текущем каталоге. Если не помогло, см. .
Примечание
Вам нужно избегать именования проектов после встроенных компонентов Python или Django. В частности, это означает, что вам следует избегать использования таких имен, как
(которые будут конфликтовать с самим Django) или (которые конфликтуют со встроенным пакетом Python).
Где должен жить этот код?
Если ваш опыт работы с простым старым PHP (без использования современных фреймворков), вы, вероятно, привыкли помещать код в корень документа веб-сервера (в таком месте, как ). С Django этого не сделать. Не рекомендуется помещать какой-либо из этого кода Python в корень документа вашего веб-сервера, поскольку это создает риск того, что люди смогут просматривать ваш код через Интернет. Это плохо для безопасности.
Поместите свой код в какой-нибудь каталог вне корня документа, например
.
Посмотрим, что создано:
mysite manage.py mysite __init__.py settings.py urls.py asgi.py wsgi.py
Вот эти файлы:
Немного истории
Ранее Питон не имел подобного универсального фреймворка. Его впервые установили в 2003 году. Создателем стала команда разработчиков, которая занималась обслуживание газетных веб-страничек. После того, как они создали несколько сайтов, задействованные элементы кодификаций использовались для будущих проектов. Это избавляло от лишней работы и нагрузки.
Соответствующий популярный «блок» кода преобразовался в проект под названием Django. В 2005 году у него образовалась открытая кодификация.
По сей день рассматриваемый py фреймворк совершенствуется и улучшается. Официальный открытый релиз состоялся в сентябре 2008 года. В 2020 году появилась относительно новая версия – 3.1. Каждое обновление включает в себя новые:
- функции;
- исправления обнаруженных ошибок;
- поддержку новых типов баз данных;
- шаблонизаторы;
- кеширование.
Теперь Джанго – это популярный и стремительно развивающийся проект совместного типа с открытым исходным кодов. К его совершенствованию привлечены тысячи разработчиков и пользователей. Несмотря на то, что происхождение framework вызывает некое отторжение, Django py стал универсальным элементом для создания совершенно любых веб-ресурсов.
Вопрос популярности
Серверные фреймворки не получают точной и окончательной оценки по своей популярности. Но программеры стараются рассчитать соответствующий показатель при помощи разнообразных проектов на GitHub и вопросов на StackOverflow.
Django используется для того, чтобы создать программу, расширение или веб-сайт, который будет универсальным и удобным. Анализ существующего контента, базирующего на соответствующем фреймворке, показывает – он достаточно популярен. Готовые проекты предусматривают огромное количество посетителей и приносят неплохой трафик.
Джанго py используется в:
- Instagram;
- Mozilla;
- National Geographic;
- MacArthur Foundation;
- Open Stack.
Все перечисленные готовые интернет проекты известны современным юзерам и находятся в активном обиходе. Поэтому в полезности и популярности фреймворка нет никаких поводов для сомнения.
О гибкости
Условно все frameworks можно разделить на гибкие и негибкие. Вторая категория – это такие «элементы кода», у которых имеется единственный правильный путь решения поставленной задачи. Поддерживают быстрое развертывание в определенной сфере. Метод решения хорошо реализуется и документируется. Но, если требуется решить проблемы за пределами основной области, могут возникать определенные трудности.
Гибкие фреймворки имеют меньше ограничений. Они позволяют разработчикам осуществлять поиск, а также задействовать подходящие инструменты для конкретных задач.
Джанго относят к «умеренно гибким» фреймворкам. Это – набор компонентов для обработки основной массы задач веб-разработки в сочетании с одним-двумя предпочтительных способами их применения. Подобная архитектура указывает на то, что пользователь может выбирать из нескольких функций что-то одно или добавлять поддержку совершенно новых возможностей.
Что нужно ещё
Итак, мы испытали сериалайзер и посмотрели, как пропущенный через него набор табличных записей был преобразован в json-формат.
Чтобы сайт начал отдавать сериализованные данные, остаётся описать контроллер (view) и указать url-маршрут — эндпоинт, при обращении к которому сайт будет отдавать данные о столичных городах.
Контроллер
Во создадим класс контроллера. Нам понадобятся следующие инструменты DRF:
- , который служит каркасом для контроллера;
- , с помощью которого будет создан объект ответа на запрос. Похожая схема есть в «классическом» Django, где в ответ на должен возвращаться .
Внутри контроллера описываем один метод — get. Почему он называется именно так?
Логика класса-родителя , а значит, и класса контроллера, такова: в контроллере запускается метод, чьё имя совпадает с именем метода поступившего http-запроса в нижнем регистре. Ровно так же работает родительский View-класс в Django.
Пример: если поступил GET-запрос, то будет задействован метод get-контроллера.
В методе опишем ту же логику, что и в файле с пробным запуском сериалайзера:
- Подготовить набор записей.
- Создать экземпляр сериалайзера, который может обрабатывать не отдельную запись, а их набор ().
- Отрендерить в json-формат данные, полученные от сериалайзера.
В отличие от файла , где мы явно прописывали json-рендер и вызывали у него метод , в коде контроллера ничего такого нет. Но рендер всё равно отработает: его работа описана под капотом внутри класса-родителя .
После того как отработал метод get, работа контроллера выглядит так:
- Объект ответа, который вернул метод get (), передаётся в метод родительского класса .
- В методе объекту ответа добавляются атрибуты:
- — им как раз выступает объект JSONRenderer,
- — ‘application/json’,
- .
Благодаря этим атрибутам формируется : у экземпляра JSONRenderer срабатывает метод , который возвращает байтовую строку с данными в json-формат. Она помещается в атрибут ответа .
Маршрут (эндпоинт)
Здесь та же схема действий, как в классическом Django. Подключаем маршруты приложения capitals:
Прописываем сам маршрут в приложении и связываем маршрут с контроллером:
API в действии
Чтобы посмотреть, как работает API, можно:
- Подготовить Python-скрипт, который будет отправлять запрос на адрес и что-то делать с полученным контентом.
- Запустить локальный сервер, на котором работает сайт — .
- Запустить в терминале Python-скрипт.
Первый шаг уже сделан: в корне учебного проекта есть файл . Этот скрипт делает запрос к , декодирует полученный json-ответ и записывает информацию о столицах и их населении в текстовый файл.
Осталось выполнить шаги 2 и 3.
Если всё отработало штатно, в корневой директории проекта появится файл со следующим содержимым:
Несмотря на то, что пример наивный, он показывает главное: как мы научили
веб-приложение отдавать информацию из базы данных в ответ на запрос, который поступает не от человека через браузер, а от другого приложения. И далее — как это приложение использует полученную информацию.
Используемые технологии
В этом разделе рассматриваются технологии, связанные с Django приложениями, основные HTTP и REST стандарты, Django REST фреймворк и программы, используемые при работе с API в терминале.
- Django приложения: «Под термином «приложение» понимается Python пакет, предоставляющий некоторый набор функций. Приложения могут повторно использоваться в различных проектах» (источник). Django проект состоит из множества Приложений, которые можно повторно использовать в других проектах. Более подробно Django приложения мы рассмотрим ниже.
- HTTP. Сокращение от Hypertext Transfer Protocol (протокол передачи гипертекста). HTTP является протоколом передачи данных по схеме «запрос-ответ» в модели клиент-сервер (источник).
- : Методы, как определено в HTTP стандартах, «указывают на желаемую операцию, которая должна быть выполнена над ресурсом» (). Основными методами являются GET и POST. Существуют и другие, например, DELETE, PUT, PATCH и т. д. Конкретный URL-адрес может выполнять различные функции в зависимости от метода, переданного ему в HTTP-запросе.
- RESTful. Сокращение от Representational State Transfer (репрезентативная передача состояния). «Веб-службы, совместимые с REST, позволяют запрашивающим системам получать доступ к текстовым представлениям веб-ресурсов и манипулировать ими, используя единый и предопределенный набор операций, не зависящих от предыдущего состояния ресурсов» (источник). Это означает, что REST приложения имеют стандартный набор/структуру HTTP ресурсов, предоставляющих данные клиентам с сервера, в зависимости от используемого HTTP метода.
- Django REST фреймворк: «Django REST фреймворк — это мощный и гибкий инструментарий для создания Web API» (источник). Мы будем использовать приложение Django REST фреймворк, чтобы облегчить интегрирование REST API в существующий функционал Django!
Настройка SSH ключей для работы с Github
К сожалению, если вы начинающий разработчик и еще не настроили SSH ключи, то в ответ на предыдущую команду может выйти ошибка.
Shell
ERROR: Repository not found.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
1 2 3 4 5 |
ERRORRepository notfound. fatalCould notreadfrom remote repository. Please makesure you have the correct access rights andthe repository exists. |
Появление данного загадочного сообщения говорит о том, что нам нужно настроить SSH ключи. Дело хоть и на один раз, но, по правде говоря, оно несколько хлопотно.
SSH является протоколом, который используется для подтверждения личных связей с удаленным сервером. Рассматривайте его как дополнительный слой защиты поверх системы логина/пароля. Процесс включает в себя генерацию уникальных ключей SSH и последующее хранение их на вашем компьютере, таким образом внешний доступ к ним будет только у GitHub.
Первым делом проверьте, есть ли у вас ключи SSH. У GitHub предусмотрен для этого специальный гид, который работает на Mac, Windows и Linux. Если у вас нет публичных и личных ключей, вам нужно будет сгенерировать их. У GitHub и для этого есть гид.
Теперь по завершении процесса генерирования ключей вы наверняка сможете успешно выполнить команду .
Не стоит расстраиваться, если разобраться с ключами SSH не выйдет с первого раза. У GitHub есть много материала, связанного с данной темой, так как на начальном этапе подобающее большинство пользователей сталкиваются с некоторыми сложностями. Если исправить ошибки на данном этапе никак не получается, оставьте пока ключи, вздремните, а затем, выспавшись, возвращайтесь к GitHub и ключам SSH. Хороший сон очень часто помогает разобраться с проблемами, это не шутка. Отдохнув, я зачастую справлялся с довольно сложными программами.
Небольшое видео на Youtube вам может помочь.
Успешно разобравшись с GitHub, двинемся дальше и выйдем и виртуального окружения при помощи команды .
Shell
(helloworld) $ exit
1 | (helloworld)$exit |
О деактивации виртуального окружения сообщит отсутствие скобок в командной строке.
Заключение
Поздравляю! Нам удалось разобрать много фундаментально важных концептов. Мы создали первое приложение Django и познакомились со структурой проектов/приложений Django. Мы также приступили к изучению представлений, url и внутреннего сервера Django. Мы также поработали с git, проследили за изменениями и разместили наш код в личном хранилище GitHub.
Inbenefit
Django – абсолютно свободный каркас для разработки приложений, созданный для программирования в связке с Python. Ключевыми преимуществами является принцип Don’t Repeat Yourself, возможность подключения сторонних модулей, автоматически создаваемая админ-панель, высокая скорость работы и просто потрясающая документация. Среди известных компаний, использующих этот фреймворк, стоит упомянуть Instagram, Google, YouTube, Disqus и Washington Times.
Чему вы научитесь?
- Использовать HTML для создания контента сайта
- Использовать CSS для создания стиля сайта
- Использовать преимущества Bootstrap для быстрой разработки сайта
- Использовать JavaScript для взаимодействия с сайтом через Front-End
- Использовать jQuery для быстрой работы с DOM
- Понимать принцип HTTP-запросов
- Как использовать возможности Python для разработки своих веб-приложений
- Использовать Django в качестве back-end для своих сайтов
- Создавать превосходные лендинги
- Создавать полнофункциональные сайты во всем стеке на Django
Bottle
Это микрофреймворк, который создает единый источник файла для каждого разрабатываемого приложения, использующего его. Этот фреймворк в первую очередь ориентирован на разработку API-интерфейсов и является одним из лучших веб-фреймворков Python. Bottle не требует других зависимостей для создания небольших веб-приложений. Он позволяет разработчику работать в тесном контакте с оборудованием и является наиболее подходящей средой для создания небольших приложений и упрощенных приложений для личного пользования.
Ключевые особенности Bottle:
- Это встроенный HTTP-сервер.
- Поставляется с поддержкой плагинов для разных баз данных.
- Предлагает маршрут отправки запроса.
- Мы можем получить доступ к стороннему шаблонизатору и серверам WSGI / HTTP.
py4you
Курс посвященный разработке web сайтов на самом популярном Python Web Фрэймворке — Django. Для участия в курсе нужны базовые знания python и ООП. В процессе прохождения курса участники будут разрабатывать собственный сайт. Это будет вполне рабочий проект, в котором будут заложены все основы по SEO оптимизации, а так же предусмотрена модель монетизации и заработка. Это может быть отличный пример в для вашего портфолио и резюме.
После данного курса, можно пробовать подавать свое резюме на вакансии Junior Python/Django Developer или создавать собственные сайты для заработка через партнерские программы.
На курсе вы научитесь:
- Разрабатывать сайты на Django
- Оптимизировать и ускорять работу сайта
- Обрабатывать данные сайта
- Запускать фоновые процессы
- Проводить базовую SEO оптимизацию
- Монетизировать web проект через парнерскую программу
Django.Fun
Видеоуроки по Джанго:
- Практика программирования на Python 3, лекция №5 Видеоуроки
Лекции о Python 3 от Тимофея Хирьянова при поддержке Московского физико-технического института. Лекция №5. - Практика программирования на Python 3, лекция №4 Видеоуроки
Лекции о Python 3 от Тимофея Хирьянова при поддержке Московского физико-технического института. Лекция №4. - Практика программирования на Python 3, лекция №3 Видеоуроки
Лекции о Python 3 от Тимофея Хирьянова при поддержке Московского физико-технического института. Лекция №3. - Практика программирования на Python 3, лекция №2 Видеоуроки
Лекции о Python 3 от Тимофея Хирьянова при поддержке Московского физико-технического института. Лекция №2. - Практика программирования на Python 3, лекция №1 Видеоуроки
Лекции о Python 3 от Тимофея Хирьянова при поддержке Московского физико-технического института. Лекция №1.
Методы выбора записей
В ORM Django есть несколько
полезных методов для быстрого получения определенных записей из таблицы.
Например, чтобы взять первую запись из выборки, используется метод first():
Women.objects.first()
Мы в этом можем
убедиться, если выведем все посты:
Women.objects.all()
То есть, берется
первая запись в соответствии с порядком сортировки модели. Мы можем поменять
этот порядок и с помощью этого же метода first() выбирать
разные записи, например, так:
Women.objects.order_by('pk').first() Women.objects.order_by('-pk').first()
Или же
воспользоваться методом last() для выбора последней записи из
набора:
Women.objects.order_by('pk').last() Women.objects.filter(pk__gt=5).last()
Методы latest и earliest
Если в таблице
присутствуют поля с указанием даты и времени, то для таких записей и таких
таблиц можно применять методы:
-
latest() – выбор
записи с самой поздней датой (наибольшей); - earliest() –
выбор записи с самой ранней датой (наименьшей).
Например:
Women.objects.earliest('time_update') Women.objects.latest('time_update')
Для чего могут
понадобиться такие методы? Например, сделана выборка с сортировкой по
какому-либо другому полю (не time_update) и из этой
выборки нужно получить самую раннюю или самую позднюю запись:
Women.objects.order_by('title').earliest('time_update')
Методы get_previous_by_, get_next_by_
Если нужно
выбрать предыдущую или следующую запись относительно текущей, то в ORM для этого
существует два специальных метода, которые выбирают записи опять же по
указанному полю с датой и временем. Например, мы выбираем некую запись с pk=7:
w = Women.objects.get(pk=7)
Тогда, для
получения предыдущей записи относительно текущей, можно записать:
w.get_previous_by_time_update()
Здесь суффикс time_update – это название
поля, по которому определяется предыдущая запись. То есть, здесь используется
не порядок следования записей в выборке, а временное поле. И уже по нему
смотрится предыдущая или следующая запись:
w.get_next_by_time_update()
Дополнительно в
этих методах можно указывать условия выборки следующей или предыдущей записи.
Например:
w.get_next_by_time_update(pk__gt=10)
выбирается
следующая запись с id больше 10.
Методы exists и count
В ORM Django имеются два
весьма полезных метода с высокой скоростью исполнения:
-
exists() – проверка
существования записи; - count() – получение
числа записей.
Они часто
используются для реализации простых проверок до выполнения других, более
сложных запросов.
Давайте я
добавлю в таблицу Category еще одну рубрику «Спортсменки» и эта
рубрика пока у нас пуста, то есть, нет ни одной записи с ней связанной. Как вы
уже догадались, мы сейчас протестируем метод exists(), который
возвращает True, если записи
есть и False – в противном
случае.
c3 = Category.objects.get(pk=3) c3.women_set.exists()
Увидим False, а для второй
категории:
c2 = Category.objects.get(pk=2) c2.women_set.exists()
получим значение
True. Соответственно,
вызывая второй метод, можем получить число записей:
c2.women_set.count()
или так:
Women.objects.filter(pk__gt=4).count()
То есть, методы exists() и count() применяются к
любой выборке.
SkillFactory
Школа SkillFactory приглашает на учебный курс по Django. Обучение позволит вам чувствовать себя уверенней в профессиональной среде программирования, оптимизировать время на написание сайтов и программ, а также повысить свою конкурентоспособность при поиске работы.
В онлайн школе вы сможете быстро освоить Django с нуля, и по завершении курса претендовать на хорошую работу. Обучение включает теоретические основы и много практики, общение с преподавателем, оперативную обратную связь на протяжении курса, дальнейшую поддержку – все, чтобы освоение материала было максимально комфортным, эффективным и полезным.
За время обучения вы реализуете учебные проекты, которые соответствуют этапам анализа данных в бизнесе и сможете пополнить портфолио. Вы получите доступ к курсам-тренажерам, где ёмкие блоки теории соседствуют с сотнями упражнений для отработки навыков. Со старта программы вы становитесь частью живого сообщества в Slack. Вы задаете вопросы о карьере и развитии персональному тьютору и получаете поддержку экспертов.
Falcon
Это микро-фреймворк, используемый для создания веб-API, и еще один широко используемый фреймворк Python. Он требует множества зависимостей для создания HTTP API и позволяет разработчику создать более понятный дизайн, допускающий архитектуру HTTP и REST.
Falcon широко используется в таких крупных организациях, как LinkedIn, OpenStack и RackSpace. Он может обрабатывать больше запросов на одном и том же оборудовании, чем все его современники. Эта структура ориентирована на 100% покрытие кода.
Ключевые особенности Falcon:
- Предварительная обработка исключений.
- Может обеспечить дополнительную скорость с поддержкой Cython.
- Имеет сильно оптимизированную базу кода, а также расширяемый.
- Модульное тестирование с помощью помощника WSGI и макетов.
- Его классы запросов и ответов обеспечивают легкий доступ к заголовкам и объектам.
- Собственные ответы на ошибки HTTP.
Sanic
Sanic – это веб-фреймворк, построенный на uvloop. Он предоставляет одну из лучших функций, то есть предлагает быстрые HTTP-ответы через асинхронную обработку запросов. Он предоставляет неблокирующие возможности, повышающие скорость. Более того, он поддерживает обработку запросов и сравнивает их с функциями await / async Python 3.5.
Ключевые особенности Sanic:
- Представления на основе классов.
- Подключаемая опора.
- Возможность чтения и записи файлов cookie.
- Позволяет вести различные типы журналов, например журналы ошибок и журналы доступа.
- Наличие обработчиков с удобной поддержкой декораторов.
Заключение
Еще очень много предстоит сделать, но выполнение всего этого менее чем за 15 минут является свидетельством того, как далеко продвинулись современные веб-технологии. Даже для такого отставшего любителя, как я, было легко и приятно вернуться в седло.
Пожалуйста, оставляйте ваши мнения по текущей теме материала. Мы очень благодарим вас за ваши комментарии, дизлайки, отклики, подписки, лайки!
Пожалуйста, оставляйте свои отзывы по текущей теме материала. За комментарии, лайки, подписки, отклики, дизлайки огромное вам спасибо!
Вадим Дворниковавтор-переводчик статьи «Creating My First Web App with Django»