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

Собрали в одном месте самые важные ссылки
и сделали Тренажер IT-инцидентов для DevOps/SRE

     12.10.2020       Выпуск 356 (12.10.2020 - 18.10.2020)       Статьи

Почему интернационализация и локализация имеют значение

Согласно всегда правдивой информации на Википедии, в мире насчитывается около 360 миллионов носителей английского языка. Мы, как разработчики, настолько привыкли писать код и документацию на английском языке, что не осознаем, что это число – это всего. 4,67% населения всего мира. Единый язык общения между разработчиками – это, конечно, хорошо, но это не значит, что пользователь должен чувствовать дискомфорт при использовании вашего продукта.

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

     05.10.2020       Выпуск 355 (05.10.2020 - 11.10.2020)       Статьи

Отношение один к одному: связывание модели пользователя с кастомной моделью профиля в Django

Снова базы данных? В реляционной базе данных есть три основных отношения: Отношение «один-к-одному»; Отношение «один-ко-многим»; Отношение «многие-ко-многим». В этой статье мы будем разбираться с первым из них – отношением «один-к-одному».

     11.09.2020       Выпуск 351 (07.09.2020 - 13.09.2020)       Статьи

Объяснение @classmethod и @staticmethod в Python

Перевод: Python’s @classmethod and @staticmethod Explained

Для новичков, изучающих объектно-ориентированное программирование на Python, очень важно хорошо разбираться в таких понятиях как classmethod и staticmethod для написания более оптимизированного и повторно используемого кода.

Кроме того, даже опытные программисты, работающие на разных языках, часто путают эти два понятия.

     09.09.2020       Выпуск 351 (07.09.2020 - 13.09.2020)       Видео

ORM vs plain SQL, why not both?

Буду рассказывать о ложной дихотомии ORM и запросов в голом SQL. Расскажу, как Django с одной стороны и aiohttp+asyncpg с другой позволяли нам катиться как угорелые

     03.09.2020       Выпуск 350 (31.08.2020 - 06.09.2020)       Видео

We make services / Никита Соболев (wemake.services)

Краткий обзор тайп-чекинга в питоне, mypy, pep484. Как я писал библиотеку django-stubs. С какими проблемами столкнулся в процессе. Что еще планируется сделать. DEP (Django Enhancement Proposal) по поводу добавления типов в core.

     25.08.2020       Выпуск 349 (24.08.2020 - 30.08.2020)       Видео

ORM vs plain SQL, why not both?

Буду рассказывать о ложной дихотомии ORM и запросов в голом SQL. Расскажу, как Django с одной стороны и aiohttp+asyncpg с другой позволяли нам катиться как угорелые

     31.07.2020       Выпуск 345 (27.07.2020 - 02.08.2020)       Статьи

Логгирование в Django (начальный обзор)

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

     24.07.2020       Выпуск 344 (20.07.2020 - 26.07.2020)       Статьи

Как Django может обрабатывать 100 миллионов запросов в день

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

Действительно, Python не очень «быстрый» язык программирования, однако он прост, удобен и люди его любят. С точки зрения производительности, он не может быть таким же быстрым, как Go или Node.js, но это становится несущественным, если рассматривать современные инфраструктуры и модульную разработку.

Поскольку я уже несколько лет варюсь в этом «котле разработки на Django», я пришел к нескольким ценным выводам, которыми собираюсь с вами поделиться.

     09.07.2020       Выпуск 342 (06.07.2020 - 12.07.2020)       Статьи

Сравнение разных django filter на примере демо базы PostgreSQL

Началось всё с того, что мне предложили в рамках предмета "Основы веб-программирования" поучаствовать в проекте, вместо проделывания лабораторных работ и курсовой, поскольку я заявил о том, что хотел быть делать нечто отдалённое от общего курса (и так уже достаточно знаний было по связке DRF + Vue, хотелось чего-то нового). И вот в одном из своих PR на github я решил использовать полнотекстовый поиск (задание намекало на это) для фильтрации контента, что заставило меня обратиться к документации Django в поисках того, каким же образом лучше это дело реализовать.

     05.07.2020       Выпуск 341 (29.06.2020 - 05.07.2020)       Статьи

Чтобы я хотел знать когда начинал изучать Django? — очень общий взгляд

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

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

     24.06.2020       Выпуск 340 (22.06.2020 - 28.06.2020)       Статьи

Как модифицировать базу данных после миграции в Django

Оригинальная статья: Adam JohnsonHow to Add Database Modifications Beyond Migrations to Your Django Project

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

  • Управление хранимыми процедурами (stored procedures)
  • Управление проверочными ограничениями (check constraints)
  • Импорт статических данных из файла
  • Запись операций миграции в лог

     23.06.2020       Выпуск 340 (22.06.2020 - 28.06.2020)       Видео

Статическая типизация в Django

* Краткий обзор тайп-чекинга в питоне, mypy, pep484.
* Как я писал библиотеку django-stubs.
* С какими проблемами столкнулся в процессе.
* Что еще планируется сделать.
* DEP (Django Enhancement Proposal) по поводу добавления типов в core.

     12.06.2020       Выпуск 338 (08.06.2020 - 14.06.2020)       Статьи

Группировка вебсокет соединений для асинхронного фреймворка Starlette

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

     08.06.2020       Выпуск 338 (08.06.2020 - 14.06.2020)       Статьи

Хранение изображений с помощью Django/Django REST

Мне в ходе разработки часто приходится работать с моделями, в которых должны быть изображения. Для удобной организации я использую древовидную структуру папок. В целом, Django предоставляет инструмент для работы с изображениями. Например, вот вопрос на Хабр Q&A о том, как работать с пикчами в Django: использовать ImageField

     03.06.2020       Выпуск 337 (01.06.2020 - 07.06.2020)       Статьи

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

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

     01.06.2020       Выпуск 337 (01.06.2020 - 07.06.2020)       Статьи

Простое распознавание лица «на лету» в Django view

Меня зовут Соболев Андрей и сегодня мы с вами создадим простую «плюшку» к Django, которая будет проверять, что на фотографии именно лицо человека (что бывает полезно в куче ситуаций).

Для этого нам понадобится OpenCV и 5 минут свободного времени. Поехали.

     26.05.2020       Выпуск 336 (25.05.2020 - 31.05.2020)       Статьи

Оптимизация запросов Django ORM

Оригинальная статья: Rocio Aramberri – Optimizing Django ORM Queries

Django ORM (Object Relational Mapping) – одна из самых мощных функций Django. Благодаря ей мы можем взаимодействовать с базой данных, используя код Python вместо SQL.

     24.05.2020       Выпуск 335 (18.05.2020 - 24.05.2020)       Статьи
     22.05.2020       Выпуск 335 (18.05.2020 - 24.05.2020)       Статьи

Асинхронные задания в Django с Celery

Если в вашем приложении есть какой-то длительный процесс, вы можете обрабатывать его не в стандартном потоке запросов/ответов, а в фоновом режиме.

Сегодня мы поговорим о процессе настройки и конфигурирования Celery и Redis для обработки длительных процессов в приложении на Django, чтобы решать такие задачи. Также мы воспользуемся Docker и Docker Compose, чтобы связать все части вместе, и рассмотрим, как тестировать задания Celery с помощью модульных и интеграционных тестов.

     22.05.2020       Выпуск 335 (18.05.2020 - 24.05.2020)       Статьи

Интеграция .pre-commit hook в Django проект

Для начала пару слов, о том что такое в целом хуки (hooks) и для чего они могут быть нужны. Git «из коробки» предоставляет инструмент, который умеет запускать ваши скрипты при наступлении какого либо события (к примеру пуш на сервер и т.п.)

.pre-commit это удобная надстройка над дефолтным git pre-commit hook, которая запускает скрипты описанные в .pre-commit-config.yaml перед созданием коммита. В теории звучит просто, перейдем к практике.