С какими версиями Django вы работали?

Ответ

Работал с 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) для обеспечения долгосрочной поддержки и доступа к современным возможностям.