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

Собрали в одном месте самые важные ссылки
консультируем про IT, Python

     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 перед созданием коммита. В теории звучит просто, перейдем к практике.

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

Авторизация пользователя при помощи Starlette + Vue.js

Задача — создать пример авторизации пользователя с использованием фреймворков Starlette (https://www.starlette.io/) и Vue.js *, который был бы максимально комфортным разработчикам Django для «миграции» в асинхронный стек.

Почему Starlette? В первую очередь скорость. Starlette ультимативно быстр, и в тестах уступает только BlackSheep (https://pypi.org/project/blacksheep/). Во вторых Starlette весьма прост и писать на нем в силу его продуманности легко и приятно.

В качестве ORM мы будем использовать Tortoise ORM (со моделями и выборками «аля Django ORM»). В качестве сессионного механизма мы будем использовать JWT.

     13.05.2020       Выпуск 334 (11.05.2020 - 17.05.2020)       Статьи

Пилим веб-опросник как у Meduza: пошаговый гайд для начинающих

Меня зовут Егор, я Full-stack разработчик в Leader-ID. В этой статье я хочу поделиться простым рецептом по созданию красивого и удобного веб-опросника наподобие тех, что делает Meduza. Он умеет показывать статистику после ответа на отдельные вопросы, подсчитывать общий балл, выдавать комментарии, выгружать данные для анализа и шарить результаты в соцсети. Для реализации этой задачи я выбрал Django, DRF, Python и базу данных PostgreSQL.

     11.05.2020       Выпуск 334 (11.05.2020 - 17.05.2020)       Статьи

Настройка Debian, Nginx и Gunicorn для Django проекта

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

     09.05.2020       Выпуск 333 (04.05.2020 - 10.05.2020)       Статьи

Django. Как создать полиморфную систему динамических виджетов

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

     05.05.2020       Выпуск 333 (04.05.2020 - 10.05.2020)       Статьи

Django. Добавление счётчиков к моделям в административной панели Django

Заметка о добавлении счетчиков к моделям в административной панели Django

     02.05.2020       Выпуск 332 (27.04.2020 - 03.05.2020)       Статьи

Управлять правами на уровне объектов

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

 

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

Этими вопросами занимаются несколько пакетов, мы рассмотрим один из них — Django-Access. Все, кому это интересно, приглашаются под кат.

     29.04.2020       Выпуск 332 (27.04.2020 - 03.05.2020)       Статьи

Django. Переопределение модели пользователя

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

     29.04.2020       Выпуск 332 (27.04.2020 - 03.05.2020)       Статьи

Django. Как изменить queryset и возможность редактирования в ModelAdmin в зависимости от пользователя

Небольшая заметка о том, как поправить queryset форме администрирования admin.ModelAdmin или UserAdmin . Собственно разницы никакой, поскольку форма UserAdmin наследована от admin.ModelAdmin . Но тем не менее покажу на примере UserAdmin

     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.

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

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

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