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
Открытые офисные часы DSF: присоединяйтесь!

Django Software Foundation запускает еженедельные открытые офисные часы для работы над проектами, связанными с DSF. Встречи по средам в 18:00 UTC. Чтобы присоединиться, свяжитесь с членами совета для получения ссылки на видеозвонок. Не упустите шанс внести вклад!

Подробности: https://www.djangoproject.com/weblog/2024/oct/16/announcing-weekly-dsf-office-hours/

#en

@django_prog | Другие наши каналы
6 тегов шаблонов Django, нечасто представленных в руководствах

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

1. for…empty

Тег for может иметь необязательный элемент {% empty%}, текст которого отображается, если имеющийся массив пуст или не может быть найден:
{% for student in student_list %} ... {% empty %} ... {% endfor %}
Это эквивалентно следущему коду:
{% if student-list %} {% for student in student_list %} ... {% endfor %} {% else %} ... {% endif %}
2. lorem

Нет, вам не нужны никакие другие пакеты для использования текста lorem. Данный тег отображает на экране известный псевдолатинский текст “lorem ipsum”. Это иногда бывает полезным для заполнения шаблонов примерными данными, если конечно у вас пока нет никаких других данных.
{% lorem [count] [method] [random] %}
Напрмер:

* {% lorem %} выведет обычный абзац «lorem ipsum»;
* {% lorem 3 p %} выведет обычный абзац «lorem ipsum» и два случайных абзаца, каждый из которых заключен в теги HTML

;
* {% lorem 2 w random %} выведет два случайных латинских слова;

3. now

Отображает текущую дату и / или время в формате, соответствующем заданной строке. Такая строка может содержать символы спецификаторов в формате, описанном в разделе фильтра даты.
{% npw "jS F Y" %}
4. resetcycle

Сбрасывает предыдущий цикл таким образом, чтобы при следующем вызове он начинал работу с первого элемента. Без аргументов тег {% resetcycle%} сбросит последний цикл {% cycle%}, который определен в данном шаблоне.
{% for coach in coach_list %} {{ coach.name }} {% for athlete in coach.athlete_set.all %}
José Mourinho

Thibaut Courtois

John Terry

Eden Hazard

Carlo Ancelotti

Manuel Neuer

Thomas Müller

5. verbatim

* Останавливает рендеринг содержимого данного тега;
* обычно используется для разрешения конфликтов с объектом layer JavaScript, который часто конфликтует с синтаксисом Django

Например:
{% verabtim %} {{ if dying }} Still alive. {{/if}} {% endverbatim %}
Вы также можете назначить специальный закрывающий тег, позволяющий использовать {% endverbatim %} как часть неотрисованного контента:
{% verbatim myblock %}
Избегайте рендеринга шаблонов через:
{% verbatim %} {% endverbatim %} block. {% endverbatim myblock %}
6. widthratio

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

Если this_value равно 175, max_value равно 200, а max_width равно 100, изображение в приведенном выше примере будет иметь ширину 88 пикселей (потому что 175/200 = 0,875; 0,875 * 100 = 87,5, округляется до 88).

В некоторых случаях вы можете захотеть сохранить результат вычисления ширины в переменной. Это можно сделать, например, следующим образом:
{% widthratio this_value max_value max_width as width %} {% blocktrans %}The width is: {{ width }}{%endblocktrans%}
Сообщение 6 тегов шаблонов Django, нечасто представленных в руководствах появились сначала на Pythonist.

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

@django_prog | Другие наши каналы
Асинхронность в 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 | Другие наши каналы