• वेब फ्रेमवर्क Django का 6.0 संस्करण जारी हुआ है, जो Python 3.12+ का समर्थन करता है और सुरक्षा, टेम्पलेट तथा asynchronous फीचर्स में व्यापक सुधार लाता है
  • Content Security Policy(CSP) डिफ़ॉल्ट रूप से बिल्ट-इन है, जिससे XSS जैसी कंटेंट इंजेक्शन अटैक से बचाव के लिए पॉलिसी सेट की जा सकती है
  • Template Partials सुविधा से टेम्पलेट के अंदर पुन: प्रयोज्य भाग परिभाषित करना संभव हुआ, जिससे कोड मॉड्यूलरिटी बेहतर हुई
  • Background Tasks framework जोड़ा गया है, जो request-response cycle के बाहर async tasks चलाने का समर्थन करता है
  • Python का नया email API अपनाया गया, MariaDB 10.5 का समर्थन हटाया गया, और DEFAULT_AUTO_FIELD का डिफ़ॉल्ट बदलना आदि के साथ संगतता समायोजन और आधुनिकीकरण किया गया

Python संगतता

  • Django 6.0 Python 3.12, 3.13, 3.14 का समर्थन करता है और प्रत्येक सीरीज़ के केवल latest release को ही official support मिलता है
  • Django 5.2.x Python 3.10 और 3.11 का अंतिम संस्करण है
  • Django 6.0 के बाद third-party ऐप्स से Django 5.2 से पुराने संस्करणों का सपोर्ट हटाने की सलाह दी जाती है

प्रमुख नई सुविधाएँ

Content Security Policy(CSP) का समर्थन

  • Django में CSP standard इन-बिल्ट है, जो XSS जैसे कंटेंट इंजेक्शन अटैक से सुरक्षा को मजबूत करता है
    • ContentSecurityPolicyMiddleware, csp() context processor और SECURE_CSP सेटिंग के जरिए नीति परिभाषित की जा सकती है
    • Python डिक्शनरी आधारित सेटअप से स्पष्ट और सुरक्षित policy composition संभव है
  • SECURE_CSP_REPORT_ONLY से monitor mode सेट किया जा सकता है
  • view स्तर पर policy बदलने या disable करने के लिए decorator उपलब्ध है

Template Partials

  • partialdef और partial टैग जोड़े गए हैं, जिससे टेम्पलेट फ्रैगमेंट को परिभाषित कर दोबारा उपयोग किया जा सकता है
  • template_name#partial_name सिंटैक्स से get_template(), render(), {% include %} आदि में सीधे संदर्भित किया जा सकता है
  • तीसरे-पक्ष पैकेज django-template-partials उपयोगकर्ताओं के लिए migration guide दी गई है

Background Tasks framework

  • Django में async कार्य निष्पादन हेतु बिल्ट-इन framework जोड़ा गया है
    • HTTP request-response cycle के बाहर email भेजना, data processing आदि चलाया जा सकता है
    • @task डेकोरेटर से task define करें और enqueue() से queue में डालें
  • बैकएंड TASKS सेटिंग से चुना जाता है, जिसमें development और testing के लिए दो default backends शामिल हैं
  • Django केवल task निर्माण और queuing संभालता है; वास्तविक execution के लिए external worker process की जरूरत होगी

Python का नया ईमेल API अपनाया गया

  • Django का email handling अब Python 3.6+ का आधुनिक email API (email.message.EmailMessage) उपयोग करता है
  • पुराने SafeMIMEText, SafeMIMEMultipart classes deprecated हो गए हैं
  • EmailMessage.message() का return type अब Python का EmailMessage instance है

विस्तृत सुधार

Admin

  • Font Awesome Free 6.7.2 आइकन सेट लागू किया गया
  • AdminSite.password_change_form attribute से admin password change form को customize किया जा सकता है
  • messages.DEBUG और messages.INFO के लिए अलग icon और CSS style उपलब्ध हैं

Auth

  • PBKDF2 hash iteration count 1,000,000 से बढ़कर 1,200,000 कर दिया गया

GIS

  • GEOSGeometry.hasm property से M dimension मौजूद है या नहीं, यह पता चलता है
  • Rotate function से निर्दिष्ट angle पर rotate करने का समर्थन है
  • BaseGeometryWidget.base_layer property से map tile provider customize किया जा सकता है
  • MariaDB 12.0.1+ पर coveredby, isvalid, GeoHash, IsValid जैसी सुविधाएँ समर्थित हैं
  • widget rendering में inline JavaScript हटाई गई, इसलिए customization पर template बदलना पड़ेगा

PostgreSQL

  • Lexeme expression जोड़ने से full-text search queries पर नियंत्रण बेहतर हुआ
  • CreateExtension जैसी extension operations में hints parameter जोड़ा गया
  • django.contrib.postgres से जुड़े fields, indexes और constraints पर system checks जोड़े गए

Staticfiles

  • ManifestStaticFilesStorage अब path-ordering consistency सुनिश्चित करता है, जिससे अनावश्यक diff कम होता है
  • collectstatic command डिफ़ॉल्ट रूप से केवल summary दिखाती है; विवरण के लिए --verbosity 2 या उससे अधिक देना होता है

अन्य

  • Haitian Creole भाषा का समर्थन जोड़ा गया
  • startproject, startapp commands अब non-existent directories स्वतः बना देती हैं
  • shell command में django.conf.settings जैसे सामान्य utilities auto-import हो जाते हैं
  • migrations में zoneinfo.ZoneInfo serialization का समर्थन जोड़ा गया
  • StringAgg, AnyValue जैसी नई aggregate functions जोड़ी गईं
  • AsyncPaginator, AsyncPage के साथ async pagination का समर्थन है
  • ASGI में HTTP/2 multiple Cookie headers समर्थन उपलब्ध है
  • टेम्पलेट में forloop.length variable जोड़ा गया, querystring टैग सुधारित किया गया
  • DiscoverRunner अब forkserver mode में parallel tests का समर्थन करता है

गैर-संगत बदलाव

Database Backend API

  • BaseDatabaseSchemaEditor और PostgreSQL backend में column हटाते समय CASCADE उपयोग बंद किया गया
  • return_insert_columns()returning_columns() सहित कई method नाम बदल गए हैं
  • UPDATE … RETURNING सपोर्ट करते समय DatabaseFeatures.can_return_rows_from_update=True सेट किया जा सकता है

deprecate (support dropped)

  • MariaDB 10.5 support समाप्त (10.6+ आवश्यक)
  • Python 3.12 से कम versions का समर्थन समाप्त
    • प्रमुख libraries की minimum versions: aiosmtpd 1.4.5, bcrypt 4.1.1, Pillow 10.1.0, psycopg 3.1.12 आदि

Email

  • mixed_subtype, alternative_subtype, encoding properties हटाई गईं
  • internal implementation बदलने के कारण custom EmailMessage subclasses की जाँच आवश्यक होगी

DEFAULT_AUTO_FIELD डिफ़ॉल्ट बदलाव

  • डिफ़ॉल्ट AutoField से बदलकर BigAutoField किया गया
  • Django 3.2 के बाद के models.W042 warning को ignore करने वाले प्रोजेक्ट्स में अतिरिक्त सेटिंग जोड़नी होगी

ORM expressions

  • as_sql() method के return parameters अब tuple होने चाहिए

अन्य

  • JSON serialization में हमेशा newline जोड़ा जाता है
  • asgiref की minimum version 3.9.1 तक बढ़ाई गई

हटने वाली सुविधाएँ

django.core.mail API

  • get_connection(), send_mail() आदि में optional arguments केवल keyword arguments के रूप में देने होंगे
  • EmailMessage, EmailMultiAlternatives निर्माण करते समय पहले 4 positional arguments के बाद बाकी केवल keyword args होंगे

अन्य

  • BaseDatabaseCreation.create_test_db(serialize) हटाया गया, उसकी जगह serialize_db_to_string() उपयोग करें
  • PostgreSQL-specific StringAgg, OrderableAggMixin हटे/हटाए जाएंगे
  • urlize, urlizetrunc का default protocol Django 7.0 में HTTPS में बदलने की योजना है
  • ADMINS, MANAGERS सेटिंग अब (name, address) tuple की जगह email strings की list लेनी होगी
  • SafeMIMEText, SafeMIMEMultipart, BadHeaderError जैसी email संबंधित classes हटाई गईं

हटाए गए फीचर

  • BaseConstraint से positional arguments का समर्थन हटाया गया
  • DjangoDivFormRenderer, Jinja2DivFormRenderer हटाए गए
  • cx_Oracle database driver हटाया गया
  • forms.URLField का default scheme "http" से बदलकर "https" कर दिया गया
  • Model.save() और Model.asave() में positional args हटाए गए
  • ModelAdmin.log_deletion(), LogEntryManager.log_action() हटाए गए
  • django.utils.itercompat module हटाया गया
  • GeoIP2.coords(), GeoIP2.open() methods हटाए गए
  • ForeignObject.get_joining_columns() और संबंधित methods हटाए गए

Django 6.0 ने सुरक्षा सुदृढ़ीकरण, async processing और आधुनिक email API अपनाने के माध्यम से framework की स्थिरता और scalability को बेहतर बनाया है, और Python 3.12+ ecosystem की ओर migration को स्पष्ट रूप से तय किया है।

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.