IT-новости про Python, которые стоит знать

Собрали в одном месте самые важные ссылки
читайте авторский блог

     27.04.2020       Выпуск 332 (27.04.2020 - 03.05.2020)       Статьи
     20.04.2020       Выпуск 331 (20.04.2020 - 26.04.2020)       Статьи
     14.04.2020       Выпуск 330 (13.04.2020 - 19.04.2020)       Статьи

Множественное наследование и миксины в Python

Перевод статьи: Leonardo Giordani – Multiple inheritance and mixin classes in Python

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

     07.04.2020       Выпуск 329 (06.04.2020 - 12.04.2020)       Статьи

Тестирование производительности Python ORM методом, основанном на бенчмарке TPC-C

При написании приложений на Python, для работы с базами данных часто используются объектно-реляционные мапперы (ORM). Примерами ORM являются SQLALchemy, PonyORM и объектно-реляционный маппер, входящий в состав Django. При выборе ORM довольно важную роль играет её производительность.

     07.04.2020       Выпуск 329 (06.04.2020 - 12.04.2020)       Статьи

Начало работы с middleware в Django

Оригинальная статья: PAWEŁ FERTYKGetting started with Django middleware

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

Исходный код, включенный в этот пост, доступен на GitHub.

     30.03.2020       Выпуск 328 (30.03.2020 - 05.04.2020)       Статьи
     27.03.2020       Выпуск 327 (23.03.2020 - 29.03.2020)       Статьи

Clean Architecture глазами Python-разработчика

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

     19.03.2020       Выпуск 326 (16.03.2020 - 22.03.2020)       Статьи
     16.03.2020       Выпуск 326 (16.03.2020 - 22.03.2020)       Статьи

Создание динамических моделей в реалтайме в Django

Динамическое создание моделей или полей к уже существующей модели в ORM Django редко встречаемая задача, но иногда специфика бизнеса требует ее реализации. К примеру может возникнуть необходимость получение данных из внешней БД и при этом сами данные могут иметь либо очень большее количество полей (более 100), либо иметь постоянно меняющиеся поля. Но вы должны быть осторожны, если пойдете по этому пути, особенно если ваши модели настроены на изменение во время выполнения. В этой статье я рассмотрю ряд вопросов, которые следует учитывать при создание динамических моделей.

     16.03.2020       Выпуск 326 (16.03.2020 - 22.03.2020)       Статьи
     16.03.2020       Выпуск 326 (16.03.2020 - 22.03.2020)       Статьи

Nuxt + Django + GraphQL на примере

В этой статье вы сможете узнать как можно собрать dev-окружение современного SPA приложения с server side рендерингом, на основе фреймворков Django и Nuxt, а также их сообщения посредством GraphQL API.

 

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

     11.03.2020       Выпуск 325 (09.03.2020 - 15.03.2020)       Статьи

Как управлять загружаемыми файлами в Django

Когда файл доступен конкретному пользователю

     11.03.2020       Выпуск 325 (09.03.2020 - 15.03.2020)       Статьи

Flask-DJ: Django (mvc) структура для проекта на flask

Когда я впервые столкнулся с Flask, у меня сразу возник вопрос по построению архитектуры проекта.

 

Прочитав пару статей на Хабре (https://habr.com/ru/post/275099/ и https://habr.com/ru/post/421887/), я вспомнил свой опыт создания проектов на Django, и решил сделать инструмент, благодаря которому не придется задумываться об архитектуре, но при этом можно будет использовать все возможности Flask.

     04.03.2020       Выпуск 324 (02.03.2020 - 08.03.2020)       Статьи

Двойная проверка блокировки с Django ORM

Оригинальная статья: Luke PlantDouble-checked locking with Django ORM

Шаблон блокировки с двойной проверкой может быть полезен, когда:

  1. Вам необходимо ограничить доступ к определенному ресурсу, чтобы параллельные процессы не могли работать с ним одновременно.
  2. Другие доступные вам схемы блокировки сложны или медленные.

Этот пост о том, как можно реализовать этот шаблон в Django, используя функции ORM и блокировки на уровне базы данных. Шаблон может использоваться с любой другой ORM, но я проверил его только с Django, и подтвердил, что он работает, как и ожидается, используя PostgreSQL.

     03.03.2020       Выпуск 324 (02.03.2020 - 08.03.2020)       Статьи
     27.02.2020       Выпуск 323 (24.02.2020 - 01.03.2020)       Статьи

Подсчет запросов: Базовое тестирование производительности на Django

Очень часто можно услышать о методах тестирования, таких как TDD, и о том, как тестировать бизнес-логику приложения. Однако тестирование производительности приложения – это совсем другая задача. Есть много разных способов, но самым общим подходом считается создание среды, в которой можно проводить DDoS-атаку на свое приложение и наблюдать за его поведением. Это очень интересная тема, но это не то, о чем я хочу сегодня поговорить. Сегодня мы рассмотрим более простой тест, тот, который вы можете сделать с использованием юнит-тестов Django по умолчанию: то есть тестирование количество обращений вашего приложения к базе данных.