Релиз популярного веб-фреймворка Django 1.8

автор superman 3 апреля 2015 г. 9:17:19

Теги: DjangoPython



После более года разработки мы наконец-то дождались релиза Django 1.8. Так же радует, что это long-term support релиз. И конечно все новые проекты стоит начинать теперь с версии 1.8, да и старые не мешало бы обновить.

Что же интересно приготовили нам авторы ?

Поддержка нескольких шаблонизаторов

Да да, теперь можно не ограничивать себя только django templates, хотя и их всегда хватало с головой. В новой версии фреймворка мы можем подключить Jinja2 и другие современные шаблонизаторы. Более того, теперь мы можем использовать например django templates и jinja2 в одном проекте одновременно. Это может быть полезным при плавном обновлении legacy проектов.

В связи с этим в настройках Django проекта появилась новая установка TEMPLATES. Вот пример ее использования:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'APP_DIRS': True,
    },
]

Прямо "из коробки" уже доступны 2 значения BACKEND, это django.template.backends.django.DjangoTemplates и django.template.backends.jinja2.Jinja2.

Поддержка сложных SQL-конструкций

Посмотрите какие сложные запросы теперь можно делать из Django ORM:

# Найти компании, у которых больше сотрудников чем стульев :)
Company.objects.filter(num_employees__gt=F('num_chairs'))

# Найти компании, у которых сотрудников больше чем стульев в 2 раза
# Оба запроса эквивалентны
Company.objects.filter(num_employees__gt=F('num_chairs') * 2)
Company.objects.filter(
    num_employees__gt=F('num_chairs') + F('num_chairs'))

# Вот еще несколько примеров
Company.objects.annotate(num_products=Count('products'))
Company.objects.annotate(num_products=Count(F('products')))

# Теперь выражения могут содержать сложные вычисления
Company.objects.annotate(num_offerings=Count(F('products') + F('services')))

Информация из модели, или Model _meta API

Еще одна новинка. Теперь всю информацию по модели можно получить через _meta. Вот пример:

from django.contrib.auth.models import User
User._meta.get_fields()

В итоге мы видим, как команда разработчиков Django framework ускорила темп развития своего проекта. Это очень радует.

Мы уже начинаем миграцию на Django 1.8, и конечно во всех новых проектах используем Python 3.4.

На этом краткий обзор закончен, в скором времени мы опубликуем статьи о полезных "хаках" при работе с Django.


comments powered by Disqus

2014-2018 © thenextcode.ru