Django 6-Veröffentlichung
(docs.djangoproject.com)- Das Web-Framework Django 6.0 wurde veröffentlicht, unterstützt Python 3.12 oder höher und stärkt Sicherheit, Templates und asynchrone Funktionalitäten deutlich.
- Die eingebaute Content Security Policy (CSP) ermöglicht Richtlinieneinstellungen, um Inhaltsinjektionen wie XSS besser abzuwehren.
- Mit der Funktion Template Partials können wiederverwendbare Teile innerhalb von Templates definiert werden, wodurch die Code-Modularisierung verbessert wird.
- Ein Background Tasks Framework wurde hinzugefügt und unterstützt die Ausführung asynchroner Aufgaben außerhalb des Anfrage-Antwort-Zyklus.
- Die Einführung der modernen Python-E-Mail-API, das Ende des Supports für MariaDB 10.5 und die Änderung des Standardwerts von
DEFAULT_AUTO_FIELDsorgen für Kompatibilitätsanpassungen und Modernisierung.
Python-Kompatibilität
- Django 6.0 unterstützt Python 3.12, 3.13, 3.14; pro Serie wird nur der jeweils neueste Release offiziell unterstützt.
- Django 5.2.x ist die letzte Version, die Python 3.10 und 3.11 unterstützt.
- Nach Django 6.0 wird empfohlen, dass Drittanbieter-Apps den Support für Versionen vor Django 5.2 aufgeben.
Wichtige neue Funktionen
Unterstützung für Content Security Policy (CSP)
- Django enthält den CSP-Standard, wodurch der Schutz vor Inhaltsinjektionen wie XSS deutlich verbessert wird.
- Über
ContentSecurityPolicyMiddleware, dencsp()-Kontextprozessor und die EinstellungSECURE_CSPlassen sich Richtlinien definieren. - Klar definierte und sichere Richtlinienkonfigurationen werden durch Python-Dictionary-basierte Einstellungen unterstützt.
- Über
- Mit
SECURE_CSP_REPORT_ONLYkann ein Überwachungsmodus gesetzt werden. - Es gibt einen Dekorator, mit dem Richtlinien pro View überschrieben oder deaktiviert werden können.
Template Partials
- Tags
partialdefundpartialwurden hinzugefügt, mit denen definierbare Template-Fragmente erstellt und wiederverwendet werden können. - Mit der Syntax
template_name#partial_namekönnenget_template(),render()und{% include %}direkt auf Teile verweisen. - Für Nutzer des Drittanbieterpakets
django-template-partialssteht eine Migrationsanleitung bereit.
Background Tasks Framework
- Django erhält ein eingebautes Framework für die Ausführung asynchroner Aufgaben.
- HTTP-Anfragen und -Antworten werden dabei nicht Teil des Aufrufpfads; E-Mail-Versand oder Datenverarbeitung sind ebenfalls möglich.
- Aufgaben werden mit dem
@task-Dekorator definiert und perenqueue()in die Queue eingereiht.
- Das Backend wird über die Einstellung
TASKSfestgelegt; es sind zwei Standard-Backends für Entwicklung und Test enthalten. - Django übernimmt nur die Erstellung und das Enqueueing von Aufgaben, die Ausführung erfolgt durch externe Worker-Prozesse.
Übernahme der modernen Python-E-Mail-API
- Die E-Mail-Verarbeitung in Django nutzt jetzt die moderne E-Mail-API von Python ab Version 3.6 (
email.message.EmailMessage). - Die bisherigen Klassen
SafeMIMETextundSafeMIMEMultipartsind veraltet. - Der Rückgabetyp von
EmailMessage.message()wurde auf eine Instanz von PythonsEmailMessagegeändert.
Detaillierte Verbesserungen
Admin
- Das Icon-Set Font Awesome Free 6.7.2 wird verwendet.
- Über die Eigenschaft
AdminSite.password_change_formkann das Formular für Passwortänderungen im Adminbereich angepasst werden. - Für
messages.DEBUGundmessages.INFOwurden eigene Icons und CSS-Stile eingeführt.
Auth
- Die Anzahl der Hash-Wiederholungen für PBKDF2 wurde von 1.000.000 auf 1.200.000 erhöht.
GIS
- Die Eigenschaft
GEOSGeometry.hasmerlaubt die Prüfung, ob eine M-Dimension vorhanden ist. - Die Funktion
Rotateunterstützt Rotation um einen angegebenen Winkel. - Über die Eigenschaft
BaseGeometryWidget.base_layerist eine Anpassung der Kartenkachel-Anbieter möglich. - Ab MariaDB 12.0.1 werden
coveredby,isvalid,GeoHashundIsValidunterstützt. - Beim Widget-Rendering wurde Inline-JavaScript entfernt; für Anpassungen ist eine Template-Anpassung erforderlich.
PostgreSQL
- Mit Lexeme-Expressionen wird die Steuerung von Volltext-Suchanfragen verbessert.
- Der Parameter
hintswurde bei Erweiterungsoperationen wieCreateExtensionhinzugefügt. - Für Felder, Indizes und Constraints in
django.contrib.postgreswurden Systemprüfungen ergänzt.
Staticfiles
ManifestStaticFilesStoragesorgt für konsistente Pfadsortierung und reduziert unnötige Diffs.- Der Befehl
collectstaticgibt standardmäßig nur eine Zusammenfassung aus; Detailinformationen werden erst ab--verbosity 2angezeigt.
Sonstiges
- Unterstützung für die Sprache Haitian Creole hinzugefügt.
- Die Kommandos
startprojectundstartapperzeugen nicht vorhandene Verzeichnisse automatisch. - Beim
shell-Befehl werden Standard-Utilities wiedjango.conf.settingsautomatisch importiert. - Migrationen unterstützen die Serialisierung von
zoneinfo.ZoneInfo. - Neue Aggregate-Funktionen wie
StringAggundAnyValuewurden hinzugefügt. - Mit
AsyncPaginatorundAsyncPagesteht asynchrone Pagination zur Verfügung. - In ASGI-Umgebungen wird die Unterstützung für mehrere Cookie-Header in HTTP/2 ergänzt.
- In Templates wurde die Variable
forloop.lengthergänzt und derquerystring-Tag verbessert. DiscoverRunnerunterstützt parallelisierte Tests imforkserver-Modus.
Inkompatible Änderungen
Datenbank-Backend-API
BaseDatabaseSchemaEditorund das PostgreSQL-Backend nutzen bei der Spaltelöschung nicht mehrCASCADE.- Umbenennung von Methoden wie
return_insert_columns()zureturning_columns(). - Bei Unterstützung von
UPDATE … RETURNINGkannDatabaseFeatures.can_return_rows_from_update=Truegesetzt werden.
Eingestellte Unterstützung
- Ende der Unterstützung für MariaDB 10.5 (erforderlich ist 10.6+).
- Ende der Unterstützung für Python < 3.12.
- Mindestversionen wichtiger Bibliotheken:
aiosmtpd 1.4.5,bcrypt 4.1.1,Pillow 10.1.0,psycopg 3.1.12usw.
- Mindestversionen wichtiger Bibliotheken:
- Entfernen der Eigenschaften
mixed_subtype,alternative_subtypeundencoding. - Aufgrund interner Änderungen ist eine Überprüfung von benutzerdefinierten
EmailMessage-Unterklassen erforderlich.
Änderung des Standardwerts von DEFAULT_AUTO_FIELD
- Der Standardwert wurde von
AutoFieldaufBigAutoFieldgeändert. - Projekte, die die Warnung seit Django 3.2 (
models.W042) nicht behoben haben, müssen die Konfiguration ergänzen.
ORM-Ausdrücke
- Die Rückgabeparameter von
as_sql()müssen im Tuple-Format vorliegen.
Sonstiges
- Bei JSON-Serialisierung wird stets ein Zeilenumbruch hinzugefügt.
- Mindestversion von
asgirefauf 3.9.1 angehoben.
In Kürze zu entfernende Funktionen
django.core.mail API
- Bei
get_connection(),send_mail()usw. sollten optionale Argumente nur noch als Schlüsselwortargumente übergeben werden. - Bei der Erstellung von
EmailMessageundEmailMultiAlternativessind nur die ersten vier Argumente positional erlaubt; alle anderen nur als Schlüsselwortargumente.
Sonstiges
BaseDatabaseCreation.create_test_db(serialize)veraltet, verwenden Sieserialize_db_to_string().StringAggundOrderableAggMixinnur für PostgreSQL entfallen.- Das Standardprotokoll von
urlizeundurlizetruncwechselt in Django 7.0 auf HTTPS. ADMINSundMANAGERSmüssen als Liste von E-Mail-Strings angegeben werden, statt als Tupel aus(Name, Adresse).- Entfall von E-Mail-bezogenen Klassen wie
SafeMIMEText,SafeMIMEMultipartundBadHeaderError.
Entfernte Funktionen
- Positionsargument-Unterstützung von
BaseConstraintentfernt. - Entfernung von
DjangoDivFormRendererundJinja2DivFormRenderer. - Entfall der Unterstützung für den Datenbanktreiber
cx_Oracle. - Standard-Schema von
forms.URLField: von"http"auf"https"geändert. - Positionsargumente von
Model.save()undModel.asave()entfernt. ModelAdmin.log_deletion()undLogEntryManager.log_action()entfernt.- Modul
django.utils.itercompatentfernt. - Methoden
GeoIP2.coords()undGeoIP2.open()entfernt. - Entfernen von
ForeignObject.get_joining_columns()und zugehörigen Methoden.
Django 6.0 erhöht durch Sicherheitsverbesserungen, asynchrone Verarbeitung und die Einführung einer modernen E-Mail-API sowohl die Stabilität als auch die Skalierbarkeit des Frameworks und definiert den klaren Übergang auf Python 3.12+.
Noch keine Kommentare.