Django 5.0 - przegląd nowości i usprawnień
Django, jeden z najpopularniejszych frameworków do tworzenia stron w Pythonie, jest świeżo po premierze swojej najnowszej wersji - Django 5.0. O Django 4.0 pisaliśmy w grudniu 2021, czyli kupę czasu temu!
Ta oczekiwana aktualizacja przynosi szereg nowych funkcji, ulepszeń i zmian, które mają uprościć proces tworzenia aplikacji webowych.
Wsparcie dla najnowszych wersji Pythona
Najważniejszym punktem aktualizacji jest wsparcie dla najnowszych wersji: Pythona 3.10, Pythona 3.11 i Pythona 3.12. Zalecane jest korzystanie z najnowszych wydań Pythona, co umożliwia wykorzystanie najnowszych funkcji i poprawek.
Nowe funkcje panelu admina
W Django 5.0 wprowadzono funkcję liczenia wyników dla zastosowanych filtrów w panelu admina. Ta nowa funkcjonalność zwiększa użyteczność interfejsu administracyjnego, umożliwiając szybsze i bardziej intuicyjne przeglądanie danych. Możesz ją włączyć poprzez atrybut ModelAdmin.show_facets
.
Uproszczone szablony formularzy
Wprowadzenie koncepcji "grupy pól" i związanych z nimi szablonów znacząco upraszcza proces renderowania pól formularzy w Django 5.0. Ta zmiana przyczynia się do czystszych i bardziej zwięzłych szablonów, co ułatwia zarządzanie nimi.
To, co do tej pory wyglądało tak:
<form>
...
<div>
{{ form.name.label_tag }}
{% if form.name.help_text %}
<div class="helptext" id="{{ form.name.auto_id }}_helptext">
{{ form.name.help_text|safe }}
</div>
{% endif %}
{{ form.name.errors }}
{{ form.name }}
<div class="row">
<div class="col">
{{ form.email.label_tag }}
{% if form.email.help_text %}
<div class="helptext" id="{{ form.email.auto_id }}_helptext">
{{ form.email.help_text|safe }}
</div>
{% endif %}
{{ form.email.errors }}
{{ form.email }}
</div>
<div class="col">
{{ form.password.label_tag }}
{% if form.password.help_text %}
<div class="helptext" id="{{ form.password.auto_id }}_helptext">
{{ form.password.help_text|safe }}
</div>
{% endif %}
{{ form.password.errors }}
{{ form.password }}
</div>
</div>
</div>
...
</form>
można uprościć do:
<form>
...
<div>
{{ form.name.as_field_group }}
<div class="row">
<div class="col">{{ form.email.as_field_group }}</div>
<div class="col">{{ form.password.as_field_group }}</div>
</div>
</div>
...
</form>
Domyślne wartości obliczane w bazie danych
Dodanie parametru Field.db_default
umożliwiającego określenie domyślnych wartości obliczanych przez funkcje baz danych stanowi kolejny krok w kierunku większej elastyczności i precyzji definiowania domyślnych wartości w modelach Django.
Przykład:
from django.db import models
from django.db.models.functions import Now, Pi
class MyModel(models.Model):
age = models.IntegerField(db_default=18)
created = models.DateTimeField(db_default=Now())
circumference = models.FloatField(db_default=2 * Pi())
Pole modelu generowane w bazie danych
Nowe pole GeneratedField
pozwala na tworzenie kolumn generowanych w bazie danych, które obliczają swoją wartość na podstawie innych pól w modelu. To rozwiązanie znacząco upraszcza operacje związane z obliczeniami w bazie danych.
Przykład:
from django.db import models
from django.db.models import F
class Square(models.Model):
side = models.IntegerField()
area = models.GeneratedField(
expression=F("side") * F("side"),
output_field=models.BigIntegerField(),
db_persist=True,
)
Większa swoboda w deklarowaniu opcji dla pól
Do tej pory Field.choices
and ChoiceField.choices
mogły być tylko listą krotek lub typem wyliczeniowym. Django 5.0 pozwala na używanie tu również mappingów albo callable. Większa elastyczność zawsze się przyda.
Podsumowanie
Mimo tego, że to nowy major, te usprawnienia nie są rewolucją, a raczej dodaniem kilku przydatnych funkcji, które ułatwią tworzenie apek w Django. Warto mieć na uwadze, że Django od tej wersji już nie wspiera wersji MySQL niższych niż 8.
Oprócz opisanych w tekście funkcji, warto zwrócić uwagę na zmiany, które mogą wpłynąć na istniejące aplikacje. Szczegółowo opisane są oczywiście w dokumentacji Django 5.0.
Przeczytaj także:
- Jak organizować projekt w Django
- Keras 3.0 łączy TensorFlow, JAX i PyTorch dla głębokiego uczenia
- Python Developer - praca i zarobki w Polsce
- Prawdziwa wielowątkowość w Pythonie
- Python 3.12 - kolejne dobre wydanie!
- Python Developer – pytania rekrutacyjne + odpowiedzi
- Uruchomisz kod Pythona w Excelu bez dodatkowej konfiguracji
- Mojo - język programowania prosty jak Python i wydajny jak C++