6 poin oleh GN⁺ 2025-12-05 | Belum ada komentar. | Bagikan ke WhatsApp
  • 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 processor csp(), dan pengaturan SECURE_CSP
    • Mendukung konfigurasi kebijakan yang jelas dan aman berbasis dictionary Python
  • Mode pemantauan dapat diaktifkan dengan SECURE_CSP_REPORT_ONLY
  • Disediakan decorator untuk menimpa atau menonaktifkan kebijakan per view

Template Partials

  • Ditambahkan tag partialdef dan partial untuk mendefinisikan dan menggunakan ulang bagian template (fragment)
  • Dengan sintaks template_name#partial_name, bagian ini dapat dirujuk langsung dari get_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 @task dan dimasukkan ke antrean dengan enqueue()
  • 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 SafeMIMEText dan SafeMIMEMultipart tidak lagi digunakan
  • Tipe hasil pengembalian EmailMessage.message() berubah menjadi instance EmailMessage milik 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.DEBUG dan messages.INFO

Auth

  • Jumlah iterasi hash PBKDF2 meningkat dari 1,000,000 → 1,200,000

GIS

  • Properti GEOSGeometry.hasm memungkinkan pengecekan dimensi M
  • Fungsi Rotate mendukung rotasi dengan sudut tertentu
  • Properti BaseGeometryWidget.base_layer memungkinkan 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 hints ditambahkan ke operasi terkait ekstensi seperti CreateExtension
  • Pemeriksaan sistem ditambahkan untuk field, indeks, dan constraint terkait django.contrib.postgres

Staticfiles

  • ManifestStaticFilesStorage kini menjamin konsistensi pengurutan path, sehingga mengurangi diff yang tidak perlu
  • Perintah collectstatic secara default hanya menampilkan ringkasan, sedangkan detail ditampilkan pada --verbosity 2 atau lebih tinggi

Lainnya

  • Dukungan untuk bahasa Haitian Creole ditambahkan
  • Perintah startproject dan startapp kini otomatis membuat direktori yang belum ada
  • Di perintah shell, utilitas dasar seperti django.conf.settings diimpor otomatis
  • Migrasi kini mendukung serialisasi zoneinfo.ZoneInfo
  • Ditambahkan fungsi agregasi baru seperti StringAgg dan AnyValue
  • AsyncPaginator dan AsyncPage menghadirkan pagination asinkron
  • Lingkungan ASGI kini mendukung header Cookie HTTP/2 multipel
  • Variabel forloop.length ditambahkan ke template, dan tag querystring ditingkatkan
  • DiscoverRunner kini mendukung pengujian paralel dengan metode forkserver

Perubahan yang tidak kompatibel

API backend database

  • BaseDatabaseSchemaEditor dan backend PostgreSQL tidak lagi menggunakan CASCADE saat menghapus kolom
  • Nama metode berubah, seperti return_insert_columns()returning_columns()
  • Jika mendukung UPDATE … RETURNING, dapat mengatur DatabaseFeatures.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

Email

  • Properti mixed_subtype, alternative_subtype, dan encoding dihapus
  • Karena perubahan implementasi internal, subclass EmailMessage kustom perlu ditinjau

Perubahan nilai default DEFAULT_AUTO_FIELD

  • Nilai default berubah dari AutoFieldBigAutoField
  • 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 asgiref dinaikkan 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 EmailMessage dan EmailMultiAlternatives, selain empat argumen pertama, sisanya hanya boleh berupa keyword argument

Lainnya

  • BaseDatabaseCreation.create_test_db(serialize) akan deprecated, gunakan serialize_db_to_string()
  • StringAgg dan OrderableAggMixin khusus PostgreSQL akan deprecated
  • Protokol default urlize dan urlizetrunc akan berubah ke HTTPS di Django 7.0
  • Pengaturan ADMINS dan MANAGERS harus ditetapkan sebagai daftar string email, bukan tuple (nama, alamat)
  • Kelas terkait email seperti SafeMIMEText, SafeMIMEMultipart, dan BadHeaderError akan deprecated

Fitur yang dihapus

  • Dukungan argumen posisi pada BaseConstraint dihapus
  • DjangoDivFormRenderer dan Jinja2DivFormRenderer dihapus
  • Dukungan driver database cx_Oracle dihapus
  • Skema default forms.URLField berubah dari "http""https"
  • Dukungan argumen posisi pada Model.save() dan Model.asave() dihapus
  • ModelAdmin.log_deletion() dan LogEntryManager.log_action() dihapus
  • Modul django.utils.itercompat dihapus
  • Metode GeoIP2.coords() dan GeoIP2.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.

Belum ada komentar.