6 puan yazan GN⁺ 2025-12-05 | Henüz yorum yok. | WhatsApp'ta paylaş
  • Django web çatısı 6.0 sürümü yayınlandı ve Python 3.12+ desteğiyle güvenlik, şablon ve asenkron özelliklerinde ciddi iyileştirmeler getirildi
  • Content Security Policy (CSP) varsayılan olarak yerleşik olduğu için XSS gibi içerik enjeksiyonu saldırılarına karşı koruma politikaları ayarlanabiliyor
  • Template Partials ile şablon içinde yeniden kullanılabilir bölümler tanımlanabildiğinden kod modülerliği iyileşiyor
  • Background Tasks çatısı eklendi ve istek-yanıt döngüsünün dışında asenkron görevlerin çalıştırılması desteklendi
  • Python'un modern e-posta API'si benimsendi, MariaDB 10.5 desteği sonlandırıldı, DEFAULT_AUTO_FIELD varsayılanı değiştirildi ve bu sayede uyumluluk ayarları ve modernizasyon gerçekleştirildi

Python uyumluluğu

  • Django 6.0, Python 3.12, 3.13, 3.14'ü destekler ve her serinin yalnızca en son yayımlanan sürümünü resmi olarak destekler
  • Django 5.2.x, Python 3.10 ve 3.11 destekleyen son sürümdür
  • Django 6.0 sonrasında üçüncü taraf uygulamaların, Django 5.2'den eski sürümleri desteklememesi önerilir

Temel yeni özellikler

Content Security Policy (CSP) desteği

  • Django'da CSP standardı yerleşik olarak gelir ve XSS gibi içerik enjeksiyonu saldırılarına karşı koruma güçlendirilir
    • ContentSecurityPolicyMiddleware, csp() bağlam işleyicisi ve SECURE_CSP ayarı ile politika tanımlanabilir
    • Python sözlüğü tabanlı yapılandırma ile açık ve güvenli bir politika oluşturma desteği sağlanır
  • SECURE_CSP_REPORT_ONLY ile izleme modu ayarlanabilir
  • Görünüm düzeyinde politikayı geçersiz kılmak veya devre dışı bırakmak için bir dekoratör sunulur

Template Partials

  • Şablon parçaları (fragment) tanımlayıp yeniden kullanmak için partialdef ve partial etiketleri eklendi
  • template_name#partial_name sözdizimiyle get_template(), render(), {% include %} içinde doğrudan referans vermek mümkün
  • Mevcut üçüncü taraf django-template-partials paketi kullanıcıları için bir geçiş kılavuzu sağlanıyor

Background Tasks çatısı

  • Django'ya asenkron görev çalıştırmaya yönelik yerleşik bir çatı eklendi
    • E-posta gönderimi, veri işleme gibi işlemler HTTP istek-yanıt döngüsünün dışında yapılabilir
    • Görevler @task dekoratörüyle tanımlanır, enqueue() ile kuyruğa eklenir
  • Arka uç, TASKS ayarıyla belirlenir; geliştirme ve test için iki adet varsayılan arka uç dahil edilir
  • Django yalnızca görev oluşturma ve kuyruklama işlerini üstlenir; çalıştırma dışarıdaki bir worker süreci tarafından yapılır

Python modern e-posta API'sinin benimsenmesi

  • Django'nun e-posta işleme mantığı Python 3.6 sonrası modern e-posta API'sine (email.message.EmailMessage) geçmiştir
  • Eski SafeMIMEText ve SafeMIMEMultipart sınıfları artık kullanılmıyor
  • EmailMessage.message() dönüş tipi Python'ın EmailMessage örneği olarak değiştirildi

Ayrıntılı geliştirmeler

Admin

  • Font Awesome Free 6.7.2 simge seti uygulandı
  • AdminSite.password_change_form özelliği ile yönetici şifre değiştirme formu özelleştirilebiliyor
  • messages.DEBUG ve messages.INFO için ayrı simgeler ve CSS stilleri eklendi

Kimlik doğrulama

  • PBKDF2 hash yineleme sayısı 1.000.000 → 1.200.000 seviyesine çıkarıldı

GIS

  • GEOSGeometry.hasm özelliğiyle M boyutunun mevcut olup olmadığı kontrol edilebiliyor
  • Rotate işleviyle belirli açıyla döndürme desteği eklendi
  • BaseGeometryWidget.base_layer özelliğiyle harita tile sağlayıcısı özelleştirilebiliyor
  • MariaDB 12.0.1 ve üzeri sürümlerde coveredby, isvalid, GeoHash, IsValid gibi işlevler destekleniyor
  • Widget render edilirken satır içi JavaScript kaldırıldı, özelleştirme için şablonun güncellenmesi gerekiyor

PostgreSQL

  • Lexeme ifadeleri eklenerek tam metin araması sorgu kontrolü güçlendirildi
  • CreateExtension gibi eklenti işlemlerine hints parametresi eklendi
  • django.contrib.postgres alanları, dizinleri ve kısıtlamaları için sistem kontrolü eklendi

Staticfiles

  • ManifestStaticFilesStorage, gereksiz diff'i azaltmak için yol sıralama tutarlılığı sağlar
  • collectstatic komutu varsayılan olarak yalnızca özeti yazdırır; ayrıntılı bilgi --verbosity 2 ve üzeri seviyede görünür

Diğer

  • Haitian Creole dili desteği eklendi
  • startproject, startapp komutları var olmayan dizinleri otomatik oluşturuyor
  • shell komutunda django.conf.settings gibi temel yardımcılar otomatik içe aktarılır
  • Migasyonlarda zoneinfo.ZoneInfo serileştirmesi destekleniyor
  • StringAgg, AnyValue gibi yeni toplama işlevleri eklendi
  • AsyncPaginator, AsyncPage ile asenkron sayfalama desteği geldi
  • ASGI'de HTTP/2 çoklu Cookie başlığı desteği
  • Şablonda forloop.length değişkeni eklendi, querystring etiketi geliştirildi
  • DiscoverRunner, forkserver tabanlı paralel testleri destekliyor

Geriye dönük uyumsuzluklar

Veritabanı arka ucu API'si

  • BaseDatabaseSchemaEditor ile PostgreSQL arka ucu, sütun silinirken CASCADE kullanımını bırakıyor
  • return_insert_columns()returning_columns() gibi yöntem adı değişiklikleri
  • UPDATE … RETURNING desteğinde DatabaseFeatures.can_return_rows_from_update=True ayarı mümkün oldu

Kullanımdan kaldırma

  • MariaDB 10.5 desteği sonlandı (en az 10.6 gerekli)
  • Python 3.12 altı desteği kaldırıldı
    • Temel kütüphane minimum sürümleri: aiosmtpd 1.4.5, bcrypt 4.1.1, Pillow 10.1.0, psycopg 3.1.12 vb.

E-posta

  • mixed_subtype, alternative_subtype, encoding özellikleri kaldırıldı
  • İçsel uygulama değişikliği nedeniyle özel EmailMessage alt sınıflarının yeniden kontrol edilmesi gerekiyor

DEFAULT_AUTO_FIELD varsayılanının değiştirilmesi

  • Varsayılan değer AutoFieldBigAutoField olarak değişti
  • Django 3.2'den sonra uyarı (models.W042) işlemeyen projeler, ayar eklemelidir

ORM ifadeleri

  • as_sql() metodunun dönüş parametresi tuple formatında olmalı

Diğer

  • JSON serileştirme her zaman satır sonu ekliyor
  • asgiref minimum sürümü 3.9.1 olarak yükseltildi

Yakında kaldırılacak özellikler

django.core.mail API'si

  • get_connection(), send_mail() gibi yöntemlerde isteğe bağlı argümanların yalnızca anahtar kelime argümanı olarak verilmesi gerekiyor
  • EmailMessage, EmailMultiAlternatives oluşturulurken ilk 4 argüman dışındaki tüm argümanlar yalnızca anahtar kelime argümanı olabilir

Diğer

  • BaseDatabaseCreation.create_test_db(serialize) kaldırılıyor, yerine serialize_db_to_string() kullanılmalı
  • PostgreSQL'e özel StringAgg, OrderableAggMixin kaldırılıyor
  • urlize, urlizetrunc varsayılan protokolünün Django 7.0'da HTTPS'e çevrileceği planlanıyor
  • ADMINS, MANAGERS ayarları (ad, e-posta) çiftliği yerine e-posta dizesi listesi ile belirtilmeli
  • SafeMIMEText, SafeMIMEMultipart, BadHeaderError gibi e-posta ile ilgili sınıflar kaldırılıyor

Kaldırılan özellikler

  • BaseConstraint konumsal argüman desteği kaldırıldı
  • DjangoDivFormRenderer, Jinja2DivFormRenderer silindi
  • cx_Oracle veritabanı sürücüsü desteği kaldırıldı
  • forms.URLField varsayılan şema değeri "http""https" olarak değişti
  • Model.save() ve Model.asave() konumsal argüman desteği kaldırıldı
  • ModelAdmin.log_deletion(), LogEntryManager.log_action() kaldırıldı
  • django.utils.itercompat modülü kaldırıldı
  • GeoIP2.coords(), GeoIP2.open() yöntemleri kaldırıldı
  • ForeignObject.get_joining_columns() ve ilişkili yöntemler kaldırıldı

Django 6.0, güvenlik iyileştirmeleri, asenkron işleme yetenekleri ve modern e-posta API'si sayesinde çerçevenin güvenilirliğini ve ölçeklenebilirliğini artırırken Python 3.12+ ortamına geçişi netleştiriyor.

Henüz yorum yok.

Henüz yorum yok.