7 grudnia 2021 roku wydano Django 4.0. To również oznacza zakończenie wspierania wersji 3.1, wersja 3.2 LTS będzie otrzymywać łatki bezpieczeństwa do kwietnia 2024.
Nowa wersja Django pracuje z Pythonem 3.8, 3.9 i 3.10. Dla przypomnienia, jak pisałem w https://akademiait.com.pl/jak-zaimplentowac-switch-case-w-pythonie/, Python 3.10 ma również kilka nowości.
Jakie zmiany przynosi wersja 4.0? Cały wpis najlepiej przeczytać na stronie dokumentacji: https://docs.djangoproject.com/en/4.0/releases/4.0/#backwards-incompatible-4-0
Według mnie najciekawsze zmiany to:
- Zaprzestanie wsparcia PostgreSQL 9.6 (wspiera od 10+).
- DeleteView teraz używa FormMixin do obsługi POST. W efekcie logika z funkcji
delete()
musi zostać przeniesiona do form_valid(). - Zmiany w wykrywaniu migracji: teraz używa stanu modeli zamiast klas. Ponadto operacje migracji dla pól ForeignKey i ManyToManyField nie określają już atrybutów, które nie zostały przekazane do pól podczas inicjowania. Jako efekt uboczny
makemigrations
może wygenerować pustą migrację (AlterField) na polach ManyToManyField i ForeignKey.
Z nowych funkcjonalności:
- zmiana domyślnej biblioteki obsługi strefy czasowej z pytz na zoneinfo https://docs.djangoproject.com/en/4.0/releases/4.0/#zoneinfo-default-timezone-implementation
- możliwość użycia funkcji w model.UniqueConstraint https://docs.djangoproject.com/en/4.0/releases/4.0/#functionalunique-constraints
- nowy cache oparty o Redisa https://docs.djangoproject.com/en/4.0/releases/4.0/#redis-cache-backend
- formularze renderowane z wykorzystaniem szablonów https://docs.djangoproject.com/en/4.0/releases/4.0/#template-based-form-rendering
- testy:
- test —parallel wspiera parametr auto, który uruchamia proces testowy na każdym rdzeniu procesora (bardzo przydatne w CI)
- Django test runner wspiera parametr —shuffle dla wykonywania testów w losowej kolejności.
- runserver wspiera argument —skip-checks - może być bardzo przydatne przy migracji z poprzedniej wersji Django.
Zmian jest całkiem sporo, opisałem tutaj najciekawsze z mojego punktu widzenia. Najbardziej mi się podoba wsparcie Pythona 3.10.
Masz uwagi do posta, chcesz porozmawiać, szukasz pomocy z Pythonem i Django? Napisz do mnie!