Релиз web-фреймворка Django 2.0

Представлен релиз web-фреймворка Django 2.0, написанного на языке Python и предназначенного для разработки веб-приложений. Присвоение выпуску номера 2.0 связано к переходом к новой схеме нумерации версий, соответствующей принципу семантического версионирования. Важными изменениями, также способствовавшими присвоению знакового номера, стали прекращение поддержки Python 2.7 (для работы Django 2.0 теперь необходимо наличие Python 3.4, 3.5 или 3.6), серия нарушающих совместимость изменений и удаление большой порции возможностей, ранее объявленных устаревшими.

В рамках новой схемы присвоения версий каждый третий значительный выпуск будет отнесён к выпускам с длительным временем поддержки (LTS). После каждого LTS выпуска первая цифра версии будет увеличиваться. Например, 2.0, 2.1, 2.2 (LTS), 3.0, 3.1, 3.2 (LTS). Ветка Django 2.0 отнесена к категории выпусков с обычным сроком поддержки и будет получать обновления до августа 2018 года. LTS-ветка Django 1.8 до апреля 2018 года, а LTS-ветка 1.11 до апреля 2020 года. Поддержка ветки 1.10 прекращена.

Ключевые улучшения:

  • Поддержка упрощённого синтаксиса маршрутизации URL, позволяющего привязывать обработчики путей без применения регулярных выражений. Например, вместо «url (r'^articles/(? P‹year›[0–9]{4})/$', views.year_archive)» теперь можно указать «path ('articles/‹int: year›/', views.year_archive)». Для сохранения обратной совместимости поддержка старых методов на основе регулярных выражений сохранена в полной мере;
  • Новый интерфейс администратора (contrib.admin), построенный с использованием методов адаптивной вёрстки и работающий как на настольных, так и на мобильных устройствах;
  • Выражение Window для построения запросов с применением выражения «OVER» (запрос формируется как «expression OVER window»). Например:
          window = {         'partition': [F('studio'), F('genre')],         'order_by': ExtractYear('released').asc(),      }      Movie.objects.annotate(          best=Window(              expression=Max('rating'), **window,          ),          worst=Window(              expression=Min('rating'), **window,          ),      )  

© OpenNet