Ответ
Работал с Django 3.2 LTS и 4.x, включая актуальную LTS 4.2. Предпочитаю LTS-версии (3.2, 4.2) для production из-за их длительной поддержки и стабильности. Знаком с ключевыми изменениями в этих версиях:
- Django 4.0+:
- Удалена поддержка Python 3.6 (требуется Python 3.8+).
- Новый
async
-интерфейс ORM, позволяющий выполнять асинхронные запросы к базе данных без блокировки. - Переход на
zoneinfo
(стандартная библиотека) вместоpytz
для работы с часовыми поясами, что упрощает управление зависимостями и повышает производительность.
Пример асинхронного представления (Django 4.x):
from django.http import JsonResponse
from asgiref.sync import sync_to_async
# Пример асинхронной функции, которая может взаимодействовать с ORM
async def get_data_async():
# await sync_to_async(MyModel.objects.all)() # Пример асинхронного ORM-запроса
return {"status": "ok", "data": "async_result"}
async def my_async_view(request):
result = await get_data_async()
return JsonResponse(result)
- Django 3.2 LTS:
- Поддержка
JSONField
для всех поддерживаемых баз данных (PostgreSQL, MySQL, Oracle, SQLite), что унифицирует работу с JSON-данными. - Улучшения в
admin.StackedInline
иadmin.TabularInline
для более гибкой настройки административной панели. - Добавление
default_auto_field
для автоматического созданияBigAutoField
для первичных ключей в новых проектах, что предотвращает переполнение ID в больших таблицах.
- Поддержка
Для новых проектов всегда выбираю актуальную LTS-версию (на данный момент 4.2) для обеспечения долгосрочной поддержки и доступа к современным возможностям.