Rilis Django 6
(docs.djangoproject.com)- Versi 6.0 dari framework web Django telah dirilis, mendukung Python 3.12 ke atas, dengan peningkatan besar pada fitur keamanan, template, dan asinkron
- Content Security Policy (CSP) kini terintegrasi secara bawaan sehingga kebijakan untuk melindungi dari serangan injeksi konten seperti XSS dapat dikonfigurasi
- Fitur Template Partials memungkinkan definisi bagian template yang dapat digunakan ulang, sehingga modularisasi kode menjadi lebih baik
- Framework Background Tasks ditambahkan untuk mendukung eksekusi pekerjaan asinkron di luar siklus request-response
- Dengan adopsi API email terbaru Python, penghentian dukungan MariaDB 10.5, dan perubahan nilai default
DEFAULT_AUTO_FIELD, dilakukan penyesuaian kompatibilitas dan modernisasi
Kompatibilitas Python
- Django 6.0 mendukung Python 3.12, 3.13, 3.14, dan hanya rilis terbaru dari tiap seri yang didukung secara resmi
- Django 5.2.x adalah versi terakhir yang mendukung Python 3.10 dan 3.11
- Setelah Django 6.0, aplikasi pihak ketiga disarankan untuk menghentikan dukungan bagi versi sebelum Django 5.2
Fitur baru utama
Dukungan Content Security Policy (CSP)
- Standar CSP kini tertanam di Django untuk memperkuat pertahanan terhadap serangan injeksi konten seperti XSS
- Kebijakan dapat didefinisikan melalui
ContentSecurityPolicyMiddleware, context processorcsp(), dan pengaturanSECURE_CSP - Mendukung konfigurasi kebijakan yang jelas dan aman berbasis dictionary Python
- Kebijakan dapat didefinisikan melalui
- Mode pemantauan dapat diaktifkan dengan
SECURE_CSP_REPORT_ONLY - Disediakan decorator untuk menimpa atau menonaktifkan kebijakan per view
Template Partials
- Ditambahkan tag
partialdefdanpartialuntuk mendefinisikan dan menggunakan ulang bagian template (fragment) - Dengan sintaks
template_name#partial_name, bagian ini dapat dirujuk langsung dariget_template(),render(),{% include %}, dan lainnya - Tersedia panduan migrasi bagi pengguna paket pihak ketiga
django-template-partials
Framework Background Tasks
- Django kini menambahkan framework bawaan untuk menjalankan pekerjaan asinkron
- Dapat digunakan untuk mengirim email, memproses data, dan tugas lain di luar siklus request-response HTTP
- Tugas didefinisikan dengan decorator
@taskdan dimasukkan ke antrean denganenqueue()
- Backend ditentukan melalui pengaturan
TASKS, dan dua backend bawaan disertakan untuk pengembangan dan pengujian - Django hanya menangani pembuatan dan pengantrean tugas, sedangkan eksekusi harus dilakukan oleh proses worker eksternal
Adopsi API email terbaru Python
- Logika pemrosesan email Django beralih ke API email modern Python sejak 3.6 (
email.message.EmailMessage) - Kelas lama
SafeMIMETextdanSafeMIMEMultiparttidak lagi digunakan - Tipe hasil pengembalian
EmailMessage.message()berubah menjadi instanceEmailMessagemilik Python
Peningkatan detail
Admin
- Mengadopsi set ikon Font Awesome Free 6.7.2
- Form ubah kata sandi admin kini dapat dikustomisasi melalui properti
AdminSite.password_change_form - Ikon dan gaya CSS terpisah diterapkan untuk
messages.DEBUGdanmessages.INFO
Auth
- Jumlah iterasi hash PBKDF2 meningkat dari 1,000,000 → 1,200,000
GIS
- Properti
GEOSGeometry.hasmmemungkinkan pengecekan dimensi M - Fungsi
Rotatemendukung rotasi dengan sudut tertentu - Properti
BaseGeometryWidget.base_layermemungkinkan kustomisasi penyedia tile peta - Di MariaDB 12.0.1 ke atas, didukung fitur seperti
coveredby,isvalid,GeoHash,IsValid, dan lainnya - JavaScript inline dihapus saat rendering widget, sehingga kustomisasi kini memerlukan perubahan template
PostgreSQL
- Penambahan ekspresi Lexeme meningkatkan kontrol terhadap kueri pencarian teks penuh
- Parameter
hintsditambahkan ke operasi terkait ekstensi sepertiCreateExtension - Pemeriksaan sistem ditambahkan untuk field, indeks, dan constraint terkait
django.contrib.postgres
Staticfiles
ManifestStaticFilesStoragekini menjamin konsistensi pengurutan path, sehingga mengurangi diff yang tidak perlu- Perintah
collectstaticsecara default hanya menampilkan ringkasan, sedangkan detail ditampilkan pada--verbosity 2atau lebih tinggi
Lainnya
- Dukungan untuk bahasa Haitian Creole ditambahkan
- Perintah
startprojectdanstartappkini otomatis membuat direktori yang belum ada - Di perintah
shell, utilitas dasar sepertidjango.conf.settingsdiimpor otomatis - Migrasi kini mendukung serialisasi
zoneinfo.ZoneInfo - Ditambahkan fungsi agregasi baru seperti
StringAggdanAnyValue AsyncPaginatordanAsyncPagemenghadirkan pagination asinkron- Lingkungan ASGI kini mendukung header Cookie HTTP/2 multipel
- Variabel
forloop.lengthditambahkan ke template, dan tagquerystringditingkatkan DiscoverRunnerkini mendukung pengujian paralel dengan metodeforkserver
Perubahan yang tidak kompatibel
API backend database
BaseDatabaseSchemaEditordan backend PostgreSQL tidak lagi menggunakanCASCADEsaat menghapus kolom- Nama metode berubah, seperti
return_insert_columns()→returning_columns() - Jika mendukung
UPDATE … RETURNING, dapat mengaturDatabaseFeatures.can_return_rows_from_update=True
Dukungan yang dihentikan
- Dukungan untuk MariaDB 10.5 dihentikan (memerlukan 10.6 ke atas)
- Dukungan untuk Python di bawah 3.12 dihentikan
- Versi minimum library utama mencakup
aiosmtpd 1.4.5,bcrypt 4.1.1,Pillow 10.1.0,psycopg 3.1.12, dan lainnya
- Versi minimum library utama mencakup
- Properti
mixed_subtype,alternative_subtype, danencodingdihapus - Karena perubahan implementasi internal, subclass
EmailMessagekustom perlu ditinjau
Perubahan nilai default DEFAULT_AUTO_FIELD
- Nilai default berubah dari
AutoField→BigAutoField - Proyek yang belum menangani peringatan Django 3.2 (
models.W042) perlu menambahkan pengaturan terkait
Ekspresi ORM
- Parameter return dari metode
as_sql()harus berbentuk tuple
Lainnya
- Serialisasi JSON kini selalu menambahkan baris baru
- Versi minimum
asgirefdinaikkan menjadi 3.9.1
Fitur yang akan deprecated
API django.core.mail
- Di
get_connection(),send_mail(), dan lainnya, argumen opsional harus diberikan hanya sebagai keyword argument - Saat membuat
EmailMessagedanEmailMultiAlternatives, selain empat argumen pertama, sisanya hanya boleh berupa keyword argument
Lainnya
BaseDatabaseCreation.create_test_db(serialize)akan deprecated, gunakanserialize_db_to_string()StringAggdanOrderableAggMixinkhusus PostgreSQL akan deprecated- Protokol default
urlizedanurlizetruncakan berubah ke HTTPS di Django 7.0 - Pengaturan
ADMINSdanMANAGERSharus ditetapkan sebagai daftar string email, bukan tuple (nama, alamat) - Kelas terkait email seperti
SafeMIMEText,SafeMIMEMultipart, danBadHeaderErrorakan deprecated
Fitur yang dihapus
- Dukungan argumen posisi pada
BaseConstraintdihapus DjangoDivFormRendererdanJinja2DivFormRendererdihapus- Dukungan driver database
cx_Oracledihapus - Skema default
forms.URLFieldberubah dari"http"→"https" - Dukungan argumen posisi pada
Model.save()danModel.asave()dihapus ModelAdmin.log_deletion()danLogEntryManager.log_action()dihapus- Modul
django.utils.itercompatdihapus - Metode
GeoIP2.coords()danGeoIP2.open()dihapus ForeignObject.get_joining_columns()dan metode terkait dihapus
Django 6.0 meningkatkan stabilitas dan skalabilitas framework melalui penguatan keamanan, pemrosesan asinkron, dan adopsi API email modern, sekaligus memperjelas transisi ke lingkungan Python 3.12 ke atas.
Belum ada komentar.