Если вы пишите на Django или собираетесь писать на нём, я нашёл довольно адекватный и хороший стаилгайд от HackSoftware, который позволит вашему коду на Django не превратиться в макароны.
Стаилгайд описывает большинство кейсов, с которыми сталкивается разработчик - от взаимодействия с моделями и сервисами, до тестирования и работы с Celery.
#ссылочки #django
Стаилгайд описывает большинство кейсов, с которыми сталкивается разработчик - от взаимодействия с моделями и сервисами, до тестирования и работы с Celery.
#ссылочки #django
GitHub
GitHub - HackSoftware/Django-Styleguide: Django styleguide used in HackSoft projects
Django styleguide used in HackSoft projects. Contribute to HackSoftware/Django-Styleguide development by creating an account on GitHub.
Проект который я пишу в основном на Django, поэтому в следующее время будет довольно много ресурсов по ней 🌚
Есть задача реализовать импорт/экспорт сущностей (в различных форматах), библиотека django-import-export позволяет сделать это в кратчайшие сроки. Можно, конечно, реализовать свой импорт/экспорт, но зачем изобретать велосипед? К слову, библиотека поддерживается, активность на гитхабе есть, поэтому с ней проблем быть не должно.
Что она умеет?
- Экспорт в различные форматы: Excel, CSV, JSON и вообще любой другой формат, который поддерживает tablib
- Интеграция с админкой (импорт, экспорт)
- Превью импорта
- Экспорт с поддержкой фильтров
Github | Документация
#библиотека #django
Есть задача реализовать импорт/экспорт сущностей (в различных форматах), библиотека django-import-export позволяет сделать это в кратчайшие сроки. Можно, конечно, реализовать свой импорт/экспорт, но зачем изобретать велосипед? К слову, библиотека поддерживается, активность на гитхабе есть, поэтому с ней проблем быть не должно.
Что она умеет?
- Экспорт в различные форматы: Excel, CSV, JSON и вообще любой другой формат, который поддерживает tablib
- Интеграция с админкой (импорт, экспорт)
- Превью импорта
- Экспорт с поддержкой фильтров
Github | Документация
#библиотека #django
GitHub
GitHub - django-import-export/django-import-export: Django application and library for importing and exporting data with admin…
Django application and library for importing and exporting data with admin integration. - django-import-export/django-import-export
Скучали по Django? Вот вам ещё пакетик.
Если вам нужно реализовать историю изменения данных в моделях, то django-simple-history может это сделать для вас.
GitHub | Документация
#django #библиотека
Если вам нужно реализовать историю изменения данных в моделях, то django-simple-history может это сделать для вас.
GitHub | Документация
#django #библиотека
Небольшой хинт, да, снова #django.
У меня есть небольшая задача, в которой мне нужно изменять файл в Celery задаче. Дефолтный update менеджера модели работать не будет, поэтому устанавливаем атрибуты и вызываем save на объекте.
Работать он не будет, потому что
Первая картинка - моделька, вторая - как оно работает. Ваши варианты можете кидать в коменты, интересно послушать.
У меня есть небольшая задача, в которой мне нужно изменять файл в Celery задаче. Дефолтный update менеджера модели работать не будет, поэтому устанавливаем атрибуты и вызываем save на объекте.
Работать он не будет, потому что
QuerySet.update()
не вызывает save()
на модели, поэтому механизмы сохранения файлов в сторадже отрабатывать не будут.Первая картинка - моделька, вторая - как оно работает. Ваши варианты можете кидать в коменты, интересно послушать.
Опять пост про ORM, надеюсь пока последний (хотя, кто его знает...)
Новая фича с рекомендациями репозиториев на гитхабе меня радует. Нашел вот такой cheatsheet для Django ORM, описывает пример запроса и генерируемый SQL-код. Очень полезно, если вы знаете SQL, но не знаете как выразить тот или иной запрос через Django ORM.
#ссылочки #django
Новая фича с рекомендациями репозиториев на гитхабе меня радует. Нашел вот такой cheatsheet для Django ORM, описывает пример запроса и генерируемый SQL-код. Очень полезно, если вы знаете SQL, но не знаете как выразить тот или иной запрос через Django ORM.
#ссылочки #django
🔥1
У меня тут небольшая хотелка возникла, я захотел исходя из описаний полей в Pydantic модели генерировать запрос на выборку с фильтрацией из БД.
Оказывается, кто-то уже сделал похожее для Django. Выглядит неплохо, но всё же саму генерацию запроса я бы вынес в отдельный класс :)
#django #pydantic #eng #статья
Оказывается, кто-то уже сделал похожее для Django. Выглядит неплохо, но всё же саму генерацию запроса я бы вынес в отдельный класс :)
#django #pydantic #eng #статья
Medium
Extending Pydantic use cases with Django — Filtering
Some time ago I came across an article of a developer who was sharing his ideas about hype around usage of Pydantic library in Django…
Django 4.1 вышел! Список изменений, из интересного:
1) Асинхронный интерфейс к ORM. Под капотом выполняет
2) В CBV можно делать асинхронные методы. Подробнее тут.
3) То, чего мне не хватало - ограничения
4) Добавили команду optimizemigration которая попытается оптимизировать миграции.
#новости #django
1) Асинхронный интерфейс к ORM. Под капотом выполняет
sync_to_async()
, про лимиты и подводные камни можно почитать тут. Сделали как и предполагал, чтобы сделать асинхронный get
нужно добавить букву a
в начало - aget
, afirst
и т.д.2) В CBV можно делать асинхронные методы. Подробнее тут.
3) То, чего мне не хватало - ограничения
Check
, unique
и exclusion
проверяются во время валидации модели.4) Добавили команду optimizemigration которая попытается оптимизировать миграции.
#новости #django
❤3
Нашел свежий доклад со сравнением использования CTE и SFW в Django ORM и SQLAlchemy, спойлер: джанга в такие штуки не умеет, пишите raw sql.
Ещё внезапно для себя узнал насколько алхимия мощная в плане рефлексии и как с ней легко работать используя уже существующую базу.
#посмотреть #sqlalchemy #django
Ещё внезапно для себя узнал насколько алхимия мощная в плане рефлексии и как с ней легко работать используя уже существующую базу.
#посмотреть #sqlalchemy #django
YouTube
Как Django и Alchemy (не) справляются со сложным SQL
Михаил Попугин (S7, Python-разработчик) @ Moscow Python №77
"Иногда проект перерастает Django ORM, и в игру входит SQLAlchemy. Расскажу, как каждый из них справляется (или нет) с нашей сложной бизнес-логикой. Ещё немного о том, почему мы выбрали SQLAlchemy…
"Иногда проект перерастает Django ORM, и в игру входит SQLAlchemy. Расскажу, как каждый из них справляется (или нет) с нашей сложной бизнес-логикой. Ещё немного о том, почему мы выбрали SQLAlchemy…
Когда-то давно, когда я только изучал Django, мне хотелось избавиться от бойлерплейта в темплейтах и вынести некоторые части шаблонов (например кнопки) в какие-то отдельные сущности которые можно переиспользовать - например в виде компонентов.
К счастью, в Django есть решение для этого и оно называется template tags. Но у него есть несколько проблем:
1) Необходимо пробрасывать руками js и css зависимости для конкретного тега там, где он используется.
2) Теги плохо кастомизируются, например нет возможности изменить поведение тега, обязательно нужно его переписывать.
Решением этих вопросов занимается пакет с названием django-components. Он предоставляет возможность делать простые, но в то же время мощные переиспользуемые компоненты. А как он справляется с проблемами выше?
1) При объявлении компонента будут грузиться только те js и css, которые указаны в классе компонента. Класс компонента выглядит как-то так:
2) Для изменения поведения компонента можно использовать слоты - это что-то вроде django-блоков внутри компонента. Например, мы можем сделать блок
#django #библиотека
К счастью, в Django есть решение для этого и оно называется template tags. Но у него есть несколько проблем:
1) Необходимо пробрасывать руками js и css зависимости для конкретного тега там, где он используется.
2) Теги плохо кастомизируются, например нет возможности изменить поведение тега, обязательно нужно его переписывать.
Решением этих вопросов занимается пакет с названием django-components. Он предоставляет возможность делать простые, но в то же время мощные переиспользуемые компоненты. А как он справляется с проблемами выше?
1) При объявлении компонента будут грузиться только те js и css, которые указаны в классе компонента. Класс компонента выглядит как-то так:
from django_components import componentСам js/css рендерится только там, где указаны теги
@component.register("calendar")
class Calendar(component.Component):
template_name = "calendar/calendar.html"
def get_context_data(self, date):
return {
"date": date,
}
class Media:
css = "calendar/calendar.css"
js = "calendar/calendar.js"
component_js_dependencies
и component_css_dependencies
.2) Для изменения поведения компонента можно использовать слоты - это что-то вроде django-блоков внутри компонента. Например, мы можем сделать блок
body
внутри компонента и изменять его вид тогда, когда нам нужно:<div class="calendar-component">А теперь импортируем компонент и меняем его body:
<div class="header">
{% slot "header" %}Заголовок календаря{% endslot %}
</div>
<div class="body">
{% slot "body" %}Сегодня <span>{{ date }}</span>{% endslot %}
</div>
</div>
{% component_block "calendar" date="2020-06-06" %}Github | PyPi
{% slot "body" %}А сегодня точно <span>{{ date }}</span>?{% endslot %}
{% endcomponent_block %}
#django #библиотека
🔥3
Если вы хоть раз задумывались о том, можно ли фичи FastAPI (автогенерация OpenAPI, интеграция с Pydantic, поддержка асинхронности и т.д.) добавить в Django, то я пришел вас обрадовать - есть такой проект под названием django-ninja.
Из приятных фич, которые можно встретить здесь:
1) Версионирование и возможность создания нескольких API инстансов со своей авторизацией и т.д.
2) Класс схемы интегрирован с модельками Django, поэтому можно писать что-то вроде такого:
4) Пагинация! При чем в документации показано, как можно сделать собственный кастомный класс для неё.
5) Поддержка кастомных рендереров ответов, что позволяет перевести сериализацию на ORJSON или отдавать ответы в XML, например.
6) Работа с аутентификацией из под коробки.
7) Ну и асинхронность, тем более разработчики Django работают над ней.
А в остальном он очень похож на FastAPI, особенно когда речь идет о работе с аргументами, схемами и OpenAPI.
Как по мне, выглядит как достойная замена DRF, при чем довольно простая. И об этом я говорю не просто так - в последнее время я делал проекты на FastAPI и возвращаться на Django и тем более DRF было очень непривычно.
Github | Документация
#django #библиотека
Из приятных фич, которые можно встретить здесь:
1) Версионирование и возможность создания нескольких API инстансов со своей авторизацией и т.д.
2) Класс схемы интегрирован с модельками Django, поэтому можно писать что-то вроде такого:
@api.get("/tasks", response=List[TaskSchema])3) Можно делать схемы из моделей, прям как в DRF.
def tasks(request):
return Task.objects.all()
4) Пагинация! При чем в документации показано, как можно сделать собственный кастомный класс для неё.
5) Поддержка кастомных рендереров ответов, что позволяет перевести сериализацию на ORJSON или отдавать ответы в XML, например.
6) Работа с аутентификацией из под коробки.
7) Ну и асинхронность, тем более разработчики Django работают над ней.
А в остальном он очень похож на FastAPI, особенно когда речь идет о работе с аргументами, схемами и OpenAPI.
Как по мне, выглядит как достойная замена DRF, при чем довольно простая. И об этом я говорю не просто так - в последнее время я делал проекты на FastAPI и возвращаться на Django и тем более DRF было очень непривычно.
Github | Документация
#django #библиотека
🔥5😢2
Очень годный доклад о том как начинать проекты на Django.
Рассмотрели нужность батареек, как правильно писать логику и что там на самом деле с админкой и DRF.
#django #посмотреть
Рассмотрели нужность батареек, как правильно писать логику и что там на самом деле с админкой и DRF.
#django #посмотреть
YouTube
Как и зачем начинать проекты на Django в 2021 году / Фёдор Борщёв
Приглашаем на Moscow Python Conf 2023, которая пройдет 19 и 20 мая 2023 в Москве в рамках Positive Hack Days.
Программа, подробности и билеты по ссылке https://conf.python.ru/moscow/2023
--------
Moscow Python Conf++ 2021
Профессиональная конференция для…
Программа, подробности и билеты по ссылке https://conf.python.ru/moscow/2023
--------
Moscow Python Conf++ 2021
Профессиональная конференция для…
🔥3
Интересный доклад, в котором разработчик из Uchi.ru рассказывает, как они строили realtime аналитику. Внутри доклада Kafka, Redis, Postgres и, внимание, Django.
#посмотреть #django
#посмотреть #django
YouTube
Real-time аналитика в Uchi.ru - как смотреть сложные метрики здесь и сейчас
Подписывайтесь на наш канал здесь и в телеграмм https://t.me/meetups_evrone, чтобы быть в курсе будущих митапов и не пропускать полезные доклады!
Андрей Скиба / Uchi.ru
В компании Uchi.ru с ростом ее размера возникла необходимость в наблюдении за ключевыми…
Андрей Скиба / Uchi.ru
В компании Uchi.ru с ростом ее размера возникла необходимость в наблюдении за ключевыми…
🔥4