Co nowego czeka nas w Django 1.8?

Parę dni temu wydano pierwszą betę Django 1.8. Co więc ciekawego czeka nas na przełomie marca i kwietni, gdy ukaże się pierwsza stabilna wersja 1.8?

Django 1.8 będzie drugim wydaniem LTS otrzymującym poprawki bezpieczeństwa przez co najmniej trzy lata. Poprzednie wydanie LTS - 1.4 będzie wspierane przez sześć miesięcy od daty wydania 1.8. Django 1.8 wymagać będzie Pythona 2.7 lub nowszego.

Co nowego?

  • Opisano API Model._meta pozwalające operować na polach modelu. Dostępne od dawna nie było oficjalnie opisane i nie gwarantowano jego stałości.
  • Stworzono API pozwalające podpinać różne silniki szablonów. Domyślnie obsługiwane są szablony Django i Jinja2.
  • Dodano SecurityMiddleware pozwalające zwiększyć bezpieczeństwo ciągu żądanie-odpowiedź.
  • Pojawiły się specyficzne dla Postgresa pola ArrayField, HStoreField, pola zakresów *Range i operator unaccent.
  • Dodano także pole UUIDField i DurationField.
  • Rozbudowano możliwości ORMa. Nowe funkcjonalności pojawiły się w wyrażeniach, wyrażeniach warunkowych, czy możliwości wołania ustawiać dane testowe raz dla całej klasy testów dzięki metodzie setUpTestData oraz transakcji i savepointów (dla baz danych które to obsługują), co może przyśpieszyć testowanie.
  • Dodano mechanizm do obsługi procesu oznaczania własnych pól modeli jako przestarzałe (deprecated)

Więcej w notce wydania.

Wstecznie niezgodne zmiany

  • Dodanie zależnych obiektów (.add(), .remove(), .clear() i bezpośrednie przypisania) odbywa się w transakcjach, a sygnały wykonywane są w transakcji metody. Wyjątek z funkcji podpiętej pod taki sygnał cofnie całą operację.
  • Przypisanie niezapisanego obiektu do pola ForeignKey, czy OneToOneField rzuci wyjątkiem ValueError.
  • Zmieniła się też obsługa przekazywania argumentów do klas management command.
  • ORM rzuci ValueError jeżeli obiekt użyty w wyszukaniu ma zły typ.
  • Django 1.8 wspiera PostgreSQL w wersji nie niższej niż 9.0, MySQL w wersji nie niższej niż 5.5, Oracle 11.1 lub nowsze.
  • Należy wołać super w metodach testów: setUpClass() i tearDownClass()
  • django.contrib.formtools zostały przeniesione z Django do zewnętrznej aplikacji.
  • Django zamykało połączenie z bazą danych dla każdego testu. W 1.8 po wprowadzeniu transakcji Django nie zamyka już połączeń. Stare zachowanie dostępne jest poprzez klasę TransactionTestCase.
  • Funkcje rewersujące (reverse, reverse_lazy) zwracają łańcuch unikodowy zamiast bajtów.
  • Można już usunąć {% load cycle from future %} i {% load firstof from future %}, gdyż nowy kod został przeniesiony na domyślne implementacje.
  • Wprowadzenie obsługi wielu silników szablonów dodało nowe zmienne konfiguracyjne, jak i przeniosło django.core.context_processors do django.templates.context_processors.

Django zachęca też do importowania widoków w plikach urls.py zamiast używania łańcuchów. Także urlpatterns może być listą obiektów url - zamiast funkcją patterns z pustym łańcuchem na początku. Podawanie widoków jako łańcuchy oznaczono jako przestarzałe.

RkBlog

Django, 1 March 2015

Comment article
Comment article RkBlog main page Search RSS Contact