Django Unleashed Framework
1.48K subscribers
2.16K photos
2.56K links
Лучшие материалы по разработке на фреймворке Django на русском и английском языке

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Другие наши проекты: https://tprg.ru/media
Download Telegram
Асинхронность в Django: бесконечная история

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

Хотя это и правда, что фреймворк Django поддерживает асинхронный Python, но он пока не поддерживает асинхронные представления (views) и промежуточное ПО. Это все должно появиться в следующей версии.

Согласно документации Django:

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

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

Что такое асинхронный код?

В отличии от Java и других мультипоточных языков, Python — язык однопоточный. Это означает, что в каждый отдельный момент времени он может выполнять только одну задачу, а не несколько.

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

Если вы попытаетесь смоделировать событие блокировки в представлении с заданным временем сна (sleep из библиотеки time в Python), вы заметите, что представление застревает на определенное время, прежде чем двигаться дальше.

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

Но как насчет Django? Как мне сделать его асинхронным?

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

Итак, о чем мы там раньше говорили?

Celery. Вот то, что нам нужно.

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

С чего же нам начать?

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

Надеемся, что данная статья дала вам ответ на вопрос, действительно ли фреймворк Django асинхронен.

Сообщение Асинхронность в Django: бесконечная история появились сначала на Pythonist.

Читать: https://pythonist.ru/?p=11258

@django_prog | Другие наши каналы
Интеграция Django и Angular

На тот случай, когда вам надо делать то, что не хочется.

Требования: Django > 1.8, Angular 8, 9 или выше. Мы будем использовать Angular 9.

Давайте приступим непосредственно к делу. Мы надеемся, что у вас уже сделана базовая установка Django, а именно:
- Установка виртуальной среды (Vritualenv setup)
- Django проект
- Установка статичных файлов и шаблонов (Static files and template files setup)
Теперь установим Angular:
npm install -g @angular/cli
Если вы работаете под Windows, добавьте команду ng в переменную Path. В противном случае для всех последующих команд в этой статье нужно будет вводить npm run ng <ваша.

1. В Django создайте представление Landing и URL, указывающий на это представление. Визуализируйте шаблон, который вы собираетесь использовать с Angular. Скажем, файл angular_index.html, находящийся в каталоге шаблонов Django.
2. Теперь из командной строки создадим новый проект angular в статическом каталоге Django. ng new frontend.
3. Теперь базовая структура ваших приложений Angular готова. Для тестирования запустите команду ng build. Это скомпилирует ваш код и создаст ряд файлов в каталоге dist, который, в свою очередь, будет создан в каталоге frontend вашего angular-приложения. Теперь перейдите в файл angular_index.html и включите скомпилированные файлы runtime-es2015.js, polyfills.js, styles-es2015.js, vendor-es2015.js, main-es2015.js в JS-блок шаблона Django.

И теперь, почти закончив, просто добавьте в файл angular_index.html:

<app-root

А затем запустите Python-сервер следующей командой: python manage.py runserver. Перейдя по указанному URL, вы увидите ваше Angular-приложение.

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

Вы можете подумать: «А почему бы не использовать ng serve?» Да, ng serve — отличный вариант. Но, к сожалению, он не предоставляет нам скомпилированные файлы, а сохраняет эти файлы в памяти. Поэтому для разработки нам нужно использовать опцию watch в ng build .

Запустите команду ng build --watch в терминале, и при каждом изменении файла будет происходить горячая перезагрузка. Но теперь ваш браузер ничего не показывает. Дело в том, что в режиме просмотра команда ng build --watch создает другие имена файлов, без суффикса es2015. Поэтому вам нужно изменить имена этих файлов в файле angular_index.html и включить туда следующие файлы:

Для лучшей конфигурации можно взять окружение из файла settings.py. Тогда при помощи условия if вы сможете устанавливать все файлы в соответствии с этим окружением.

На всякий случай: если вы добавите поддержку IE, то будет сгенерирован дополнительный файл. Чтобы все отображалось идеально, вам нужно будет внести и этот файл.
Сообщение Интеграция Django и Angular появились сначала на Pythonist.

Читать: https://pythonist.ru/?p=11326

@django_prog | Другие наши каналы
Встроенные механизмы безопасности фреймворков Python

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

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


Читать: https://habr.com/ru/companies/ussc/articles/851578/

#ru

@django_prog | Другие наши каналы
🚀 Деплой Django приложения на AWS EKS

Узнайте, как развернуть масштабируемое Django приложение на AWS EKS, используя eksctl и kubectl. В статье описан процесс установки и настройки необходимых инструментов, создания кластеров, узлов и сервисов для эффективного управления ресурсами. Эта структура обеспечивает простое масштабирование и надежную обработку трафика.

Подробности: https://jenkinscicd.hashnode.dev/kubernetes-setup-for-your-django-notes-app

#en

@django_prog | Другие наши каналы
🎓 Управление данными студентов в Django

В статье описывается процесс создания проекта на Django для управления информацией о студентах. С помощью Class Based Views, проект позволяет добавлять, обновлять, удалять и просматривать данные студентов. Приведены пошаговые инструкции по настройке окружения и работы с компонентами Django на Apple Mac.

Подробности: https://vidyesh.hashnode.dev/create-a-small-project-that-will-capture-student-details-and-will-allow-the-user-to-insert-update-delete-and-view-all-the-student-details

#en

@django_prog | Другие наши каналы
Прорыв с ограничениями: Django и метрики Dora

Django — мощный веб-фреймворк с сильным сообществом, но есть над чем работать. Текущие метрики Dora показывают впечатляющее время работы с PR, но малое число слияний требует внимания. Улучшение тестирования и вовлечение сообщества — ключи к развитию.

Подробности: https://middlewarehq.com/blog/django-dora-metrics-strong-cycle-time-room-for-improvement-in-merged-prs

#en

@django_prog | Другие наши каналы
Всё, что вы хотели знать о Django Channels

Приветствую, друзья!

Когда я впервые начал работать с Django, меня всё устраивало, за исключением одного момента: как сделать так, чтобы приложение могло общаться с пользователем в реальном времени? Веб-сокеты, уведомления, асинхронные запросы — казалось, это точно не про чистый Django. Но затем я наткнулся на Django Channels, и многое изменилось. Channels позволили мне сделать приложение асинхронным, добавить поддержку веб-сокетов и превратить его во что-то гораздо более крутое.

В этой статье я расскажу, как работать с Django Channels.


Читать: https://habr.com/ru/companies/otus/articles/852510/

#ru

@django_prog | Другие наши каналы
Почему Django — лучший выбор для веб-разработчиков

Если вы ищете надежный и безопасный фреймворк для нового веб-проекта, обратите внимание на Django. Благодаря встроенным функциям, высоким стандартам безопасности и поддержке сообщества, Django позволяет быстро создавать масштабируемые приложения. Его философия "не повторяй себя" упрощает код и ускоряет разработку. 🛠 Django: Ваш Прост в Мире Web Разработки!

Django — это мощный инструмент для создания веб-приложений с минимальными усилиями. Философия "включенных батареек" предоставляет функционал аутентификации, маршрутизации и ORM прямо из коробки, позволяя экономить время и избегать ошибок. Быстрый старт с Django упрощает создание сложных проектов, включая CMS и соцсети. Django REST Framework: упрощение разработки API

Django REST Framework (DRF) — незаменимый инструмент для создания API, подходящих для web и мобильных приложений. DRF облегчает процесс разработки благодаря сериализации, аутентификации и удобному интерфейсу. Используя его вместе с Django, можно построить надежные и безопасные серверные решения.

Подробности: https://codymohit.com/why-django-is-the-best-framework-for-your-next-web-project

#en

@django_prog | Другие наши каналы
Создадим команду Wild Politics вместе

Здравствуйте, Хабровчане!

Мой предыдущий пост "Как потратить шесть лет и быть невидимкой в Play Market" собрал пусть и не рекордные, но всё-таки 13 тысяч просмотров, благодаря чему в мой пет-проект заглянуло много новых лиц. Я благодарен вам за внимание к игре, отзывы и критику.

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

Обучение. По отзывам многих людей, оно обрывается слишком резко, не даёт понимания, чем можно заняться в игре, банально не затягивает. Планирую переработать его так, чтобы игрок в процессе обучения сразу мог прикоснуться к функционалу управления страной, пусть это и будет страна-"заглушка" (никакой реальной политики!), а в конце, проведя по всем аспектам игры, показать итоговое "окно возможностей", где резюмировать всё то, чем уже можно заняться в игре.

Доступность в Play Market. Вероятнее всего, игру не видно в поиске, в первую очередь из-за того, что она находится на стадии пре-регистрации. Также, ранее слабой была ASO-оптимизация страницы игры (буквально мало "ключевых слов" в тексте описания). Полагаю, ситуация изменится с выходом игры в публичный доступ. Но уже сейчас она собрала более 200 заявок на предварительное скачивание.

Прежде чем публиковать игру для "миллиардов пользователей Google Play", я планирую завершить перевод игры на анг


Читать: https://habr.com/ru/articles/853170/

#ru

@django_prog | Другие наши каналы
Как улучшить интерфейс Django admin для ManyToMany связей

Если вы разрабатываете на Django, вам пригодится решение для создания симметричного ManyToMany фильтра в админке. Используйте RelatedFieldWidgetWrapper и кастомную ModelForm, чтобы улучшить опыт пользования и сделать интерфейс более консистентным и удобным. Подробности в статье!

Подробности: https://kenan7.com/achieving-symmetrical-manytomany-filtering-in-django-admin

#en

@django_prog | Другие наши каналы
Отладка React на мобильных устройствах

Проблемы с отладкой React Native или React.js на мобильных устройствах могут возникать из-за различий в локальных и мобильных IP-адресах. Решением будет использование IP-адреса устройства на той же сети WiFi. Храните его в файле окружения для корректной работы только в процессе разработки.

Подробности: https://joysam.hashnode.dev/debugging-react-native-or-reactjs-application-in-mobile-on-same-wifi

#en

@django_prog | Другие наши каналы
Запуск Django в Docker с PostgreSQL, Gunicorn и Nginx

Интересуетесь, как запустить ваше Django-приложение в Docker? Статья описывает пошаговый процесс развертывания с использованием PostgreSQL, Gunicorn и Nginx. Узнайте, как конфигурировать файлы и тестировать приложение в контейнерах.

Подробности: https://arefinrumi.hashnode.dev/dockerizing-django-with-postgres-gunicorn-and-nginx

#en

@django_prog | Другие наши каналы
Выборы в Совет Django: Влияйте на будущее!

Впереди выборы в Совет Django Software Foundation 2025, где 21 кандидат готовы развивать платформу. Узнайте о них и их стратегиях до 15 ноября 2024 года, чтобы ваш голос стал важным вкладом. Присоединяйтесь к улучшению стабильности и функциональности Django!

Подробности: https://www.djangoproject.com/weblog/2024/oct/28/2025-dsf-board-candidates/

#en

@django_prog | Другие наши каналы
Регистрация пользователей с верификацией по OTP

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

Подробности: https://captain0205.hashnode.dev/user-registration-with-otp-verification

#en

@django_prog | Другие наши каналы
Как создать масштабируемое To-Do приложение с Kafka, Django и FastAPI

Пост: Статья объясняет создание to-do приложения с использованием событийно-ориентированной архитектуры. Сервисы Producer и Consumer взаимодействуют через Kafka. Прочтите, чтобы узнать о ключевых настройках и обработке задач.

Подробности: https://gauravjaiswal.com.np/building-event-driven-application-using-fast-api-django-and-kafka

#en

@django_prog | Другие наши каналы
🚀 Создание облачного компилятора с Django и AWS ECS

Интересуетесь облачными технологиями? Ознакомьтесь с проектом, в котором объединяются Django и AWS ECS для создания онлайн-компилятора кода. Поддержка множества языков программирования и контейнеризация - ключевые особенности. Подробнее о проекте и его реализации читайте в статье! Облачный компилятор: развёртывание и перспективы

Разработан проект облачного компилятора с использованием AWS ECS Fargate и Terraform для развертывания. В статье рассматриваются автоматизация через GitHub Actions, текущие ограничения и будущие улучшения. Проект открыт для доработок и сотрудничества.

Подробности: https://week-1-recap-90daysofdevops.hashnode.dev/building-a-cloud-native-code-compiler-with-django-and-aws-ecs-a-learning-journey

#en

@django_prog | Другие наши каналы
Упростите кастомизацию форм в SaaS с помощью Django Tenant Options

Текст: Столкнулись с задачей кастомизации форм в мультиарендных приложениях? Новый пакет django-tenant-options предлагает решение, позволяющее управлять обязательными и опциональными вариантами, сохраняя целостность данных. Подходит для B2B SaaS платформ.

Подробности: https://jacklinke.com/simplify-saas-app-form-customization-with-django-tenant-options

#en

@django_prog | Другие наши каналы
Упростите развертывание: Советы по работе с Django и React.js

В статье делятся советами по упрощению работы с монолитной архитектурой Django и React.js. Используя .bashrc, вы можете автоматизировать команды, такие как создание суперпользователя, миграции и перезапуск серверов, что облегчает разработку без CI/CD.

Подробности: https://joysam.hashnode.dev/monolithic-django-and-reactjs-tips-and-tricks

#en

@django_prog | Другие наши каналы
Понимание JWT и его роль в безопасности

JSON Web Token (JWT) становится все более популярным стандартом для безопасной передачи данных между сторонами. В статье обсуждаются ключевые особенности JWT, его применение в различных IT-системах, а также преимущества и недостатки этого подхода в вопросах авторизации и аутентификации.

Подробности: https://theimpostorblog.purakilla.com/autentificacion-jwt-con-react-js-y-django

#en

@django_prog | Другие наши каналы
Объяснение механизмов аутентификации: SSO, SAML, OAuth 2.0 и OIDC

Современные пользователи часто сталкиваются с необходимостью входа на разные платформы с разными учетными данными. Статья объясняет концепции SSO, SAML, OAuth 2.0 и OpenID Connect, показывая, как они упрощают доступ и повышают безопасность в цифровой среде.

Подробности: https://ritiksharmaaa.hashnode.dev/clearing-the-confusion-understanding-sso-saml-oauth-20-and-openid-connect

#en

@django_prog | Другие наши каналы