Django 3.2 veröffentlicht
by Viktor Garske on April 10, 2021, 4:26 p.m.Neuerungen
Die AppConfig
ist seit vielen Versionen ein wichtiger Bestandteil von Django, um Projekte in Apps zu strukturieren. Die apps.py
tritt in der normalen Entwicklung normalerweise eher in den Hintergrund, übernimmt aber entscheidende Aufgaben. Dies trifft insbesondere auf besonders austauschbare Applikationen zu. Wer eine default_app_config
gesetzt hat, sollte allerdings bei Django 3.2 aufhorchen: Django 3.2 kann automatisch die AppConfig
ermitteln, wenn in der App eine apps.py
mit einer einzigen AppConfig
existiert. Damit wird die nun veraltete Variable default_app_config
nicht mehr benötigt.
Weiterhin lässt sich der standardmäßige Typ des Primärschlüssels ab sofort zentral anpassen. Ein Primarschlüssel wird automatisch mit dem Typ AutoField
immer dann angelegt, wenn kein Feld mit primary_key=True
in einem Model vorhanden ist. Sollte der Typ über die ganze App oder gar das ganze Projekt verändert werden, musste bisher jedes Model einzeln einen benutzerdefinierten Typ bereitstellen. Mit der globalen Einstellung DEFAULT_AUTO_FIELD
sowie der anwendungsweiten Einstellung AppConfig.default_auto_field
lässt sich das nun zentral ändern. Weiterhin wird für neu erstellte Projekte als automatischer Primärschlüsseltyp BigAutoField
eingestellt, sodass die Primärschlüssel 64-bit statt bisher 32-bit große Integer speichern. Das ist besonders dann hilfreich, wenn von einem Model mehr als 2 Milliarden Instanzen abgespeichert werden sollen.
Die dritte große Änderung betrifft ebenfalls die Models: so ist es nun möglich, funktionelle Indizes über den positionsabhängigen Parameter *expressions
anzulegen.
Der @admin.display
-Dekorator ermöglicht es nun, für Property-Funktionen wie is_published
direkt aus dem Model heraus die Darstellung auf der Adminoberfläche, die nun ein Dark Theme unterstützt, zu definieren. Weiterhin leitet die Adminoberfläche in jedem Fall unangemeldete Benutzer auf die Anmeldeseite weiter, um nicht durch Statusmeldungen (z. B. Not Found) Aufschluss über die Existenz von Objekten zu geben.
pymemcache
wird nun ebenfalls unterstützt, sofern es in Version 3.4.0 installiert ist.
Das in Django 3.1 eingeführte JSONField
besitzt nun auch mit JSONObject
ein Pendant für Datenbankoperationen.
Wer einen Blog betreibt, kann mit Django besonders einfach RSS-Feeds für Models, hier konkret Artikel, erstellen, indem er auf das mitgelieferte django.contrib.syndication
zurückgreift. Nun ist es möglich, mit item_comments
direkt einen Link auf eine Kommentarsektion von Models zu spezifizieren, was in einigen RSS-Readern wie Tiny Tiny RSS an gesonderter Stelle angezeigt wird, um schneller in die Kommentare zu springen. Auf diese Änderung bin ich besonders stolz, weil ich sie selber beigetragen habe. ;)
Inkompatibilitäten
Die neue DatabaseFeatures.introspected_field_types
ersetzt eine Reihe alter Features wie can_introspect_autofield
, etc.
In der Adminoberfläche wird nun bei den Seiten ab 1 statt wie bisher ab 0 gezählt.
Abkündigungen
Die Unterstützung von PostgreSQL 9.5, MySQL 5.6 sowie PostGIS 2.2 wurde entfernt.
Verfügbarkeit
Django 3.2 unterstützt Python 3.9 bis 3.6. Die Unterstützung ist mindestens drei Jahre ab Veröffentlichung gewährleistet. Der vorherige LTS-Release 2.2 wird die Unterstützung nächstes Jahr im April 2022 verlieren.
Die Auflistung aller Änderungen samt Verweise und Codebeispiele ist in den Django 3.2 release notes verfügbar.
Viktor Garske
Viktor Garske ist der Hauptautor des Blogs und schreibt gerne über Technologie, Panorama sowie Tipps & Tricks.