Webframework: Das neue LTS-Release Django 3.2 ist fertig

Mit Long-Term Support sowie einigen Neuerungen sowie Breaking Changes steht das Update des Python-Webframeworks ab sofort bereit.

In Pocket speichern vorlesen Druckansicht 11 Kommentare lesen

(Bild: djangoproject.com)

Lesezeit: 2 Min.
Von
  • Matthias Parbel

Das Entwicklerteam hinter dem Python-Webframework Django hat Version 3.2 als neues LTS-Release mit Long-Term Support für die kommenden drei Jahre vorgelegt. Das Update knüpft damit an das vorangegangene LTS-Release 2.2 an, dessen Support im April 2022 ausläuft. Django 3.2 enthält einige Fehlerbereinigungen und Überarbeitungen sowie neue Funktionen – Entwicklerinnen und Entwickler müssen aber auch Breaking Changes berücksichtigen.

Automatic AppConfig Discovery soll Django-Anwendern das Einbinden von Applikationen erleichtern. Sofern Anwendungen ein apps.py-Submodul anlegen und eine einzelne AppConfig-Unterklasse definieren, erkennt Django 3.2 diese selbstständig. Der bisher notwendige Einsatz der Variablen default_app_config, die in __init__.py auf die betreffende Unterklasse verweist, wird dadurch überflüssig.

Neu im Webframework ist auch die Möglichkeit, funktionale Indizes auf Ausdrücke und Datenbankfunktionen zu erstellen, die sich dann über die Option Meta.indexes Modellen hinzufügen lassen. Für Index() steht dazu das neue Positionsargument *expressions bereit, wie das folgende Beispiel verdeutlicht:

from django.db import models
from django.db.models import F, Index, Value
from django.db.models.functions import Lower, Upper


class MyModel(models.Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    height = models.IntegerField()
    weight = models.IntegerField()

    class Meta:
        indexes = [
            Index(
                Lower('first_name'),
                Upper('last_name').desc(),
                name='first_last_name_idx',
            ),
            Index(
                F('height') / (F('weight') + Value(5)),
                name='calc_idx',
            ),
        ]

Unter den Breaking Changes, die Django-Anwender beim Upgrade auf Version 3.2 beachten müssen, finden sich vor allem Änderungen in der Datenbank-Backend-API. So ersetzt die neue Property DatabaseFeatures.introspected_field_types zwölf bisher verwendete Features – darunter can_introspect_autofield, can_introspect_big_integer_field und introspected_boolean_field_type. Darüber hinaus entfällt DatabaseOperations.random_function_sql() zugunsten der neuen Datenbankfunktion Random. Django 3.2 unterstützt zudem PostgreSQL 9.5 und MySQL 5.6 nicht mehr. Die beiden Datenbanken müssen nun mindestens auf Versionen ab 9.6 beziehungsweise ab 5.7 aktualisiert sein.

Weitere Details zu den Neuerungen des Python-Webframeworks finden sich im Django-Blog sowie in den Release Notes zu Version 3.2. Das Update steht wahlweise über die Projektwebsite oder den Python Package Index zum Download zur Verfügung.

Mehr zum Thema Python

Unter dem Motto "Professioneller Programmieren in Python" und widmen sich die Deep Dives der enterPy 2021 am 15. April vertiefend dem Einsatz von Python in Unternehmen.

Das Framework, das seinen Namen dem Jazz-Gitarristen Django Reinhardt verdankt, blickt als Open-Source-Projekt auf eine über fünfzehnjährige Geschichte zurück. Es steht seit 2008 unter der Verwaltung der Django Software Foundation und kommt unter anderem bei Instagram, Mozilla, Bitbucket und der Washington Times zum Einsatz.

Django setzt auf das MVC-Prinzip (Model View Controller) zum Unterteilen der Software in Datenmodell, Präsentation und Programmsteuerung. Die Macher sprechen in den FAQ von einer allerdings abgewandelten Form, die aus Modell, Vorlage und Präsentation besteht und daher eigentlich MTV für Model, Template View heißen müsste.

(map)