Neuroróżnorodność w miejscu pracy
5.12.20233 min
Bulldogjob

Bulldogjob

Django 5.0 - przegląd nowości i usprawnień

Sprawdź, jakie nowe funkcje i ulepszenia pojawiają się w Django 5.0. To najświeższa premiera frameworka Pythona.

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:

<p>Loading...</p>