از CSP داخلی تا Background Tasks و Template Partials — همه چیز درباره Django 6.0
سوم دسامبر ۲۰۲۵، تیم جنگو یکی از مهمترین نسخههای تاریخ این فریمورک را منتشر کرد. Django 6.0 نه یک بهروزرسانی تدریجی، بلکه یک تحول واقعی است — چهار ویژگی اصلی که هر کدام به تنهایی میتوانستند یک نسخه minor را توجیه کنند، اینجا در یک نسخه major کنار هم آمدهاند.
اگر با جنگو کار میکنید، این مقاله را تا آخر بخوانید. چیزهایی که تغییر کرده، روش کار شما را عوض میکند.
تاریخ انتشار: ۳ دسامبر ۲۰۲۵
پایتون پشتیبانیشده: 3.12، 3.13، 3.14
آخرین نسخه LTS: Django 5.2
نوع نسخه: Short-term support (STS)
یکی از بزرگترین چالشهای امنیتی در وب، حملات XSS (Cross-Site Scripting) است. تا پیش از Django 6.0، برای پیادهسازی Content Security Policy مجبور بودید از پکیجهای third-party مثل django-csp استفاده کنید. حالا این قابلیت به صورت کاملاً داخلی در Django وجود دارد.
CSP به مرورگر میگوید دقیقاً از کجا میتواند script، style، تصویر و سایر منابع را بارگذاری کند — و هر چیزی که در این لیست نباشد، بلاک میشود.
برای تست قبل از اجرا از SECURE_CSP_REPORT_ONLY استفاده کنید. این حالت CSP را enforce نمیکند اما نقضها را در console مرورگر گزارش میدهد — عالی برای migration تدریجی.
یکی از دردهای قدیمی جنگو این بود: برای استفاده مجدد از یک بخش کوچک HTML، مجبور بودید یک فایل template جداگانه بسازید. Django 6.0 این مشکل را با Template Partials حل کرد.
حالا میتوانید قطعههای کوچک HTML را داخل همان فایل template تعریف کنید و هر جا خواستید — حتی در فایلهای دیگر — از آن استفاده کنید.
اگر از پکیج third-party django-template-partials استفاده میکنید، یک migration guide رسمی وجود دارد. در اکثر موارد فقط باید import را تغییر دهید.
تا پیش از Django 6.0، برای اجرای کدی خارج از چرخه request-response مجبور بودید Celery، Redis، و تنظیمات پیچیده راهاندازی کنید. Django 6.0 یک Tasks framework داخلی معرفی کرده که برای اکثر کارهای رایج کافی است.
در PyCourse خودمان از Celery استفاده میکنیم — اما برای پروژههای کوچکتر، این ویژگی جدید یک نعمت واقعی است.
Background Tasks داخلی Django برای کارهای ساده مثل ارسال ایمیل یا پردازشهای سبک مناسب است. برای کارهای سنگین مثل پردازش تصویر، صفهای پیچیده، و retry logic پیشرفته، هنوز Celery گزینه بهتری است.
Django حالا از Python email API مدرن استفاده میکند که در Python 3.6 معرفی شد. این تغییر یعنی ارسال ایمیل Unicode-friendlyتر، سادهتر، و بدون نیاز به کار مستقیم با کلاسهای MIME است.
برای اکثر کاربران این تغییر شفاف است — کد قدیمی کار میکند — اما اگر مستقیماً با خروجی متد message() کار میکردید، نوع برگشتی تغییر کرده است.
Django 6.0 پشتیبانی async را به یک شهروند درجه اول تبدیل کرده. قبلاً async views وجود داشت اما برای کارهای database مجبور بودید از sync_to_async() wrapper استفاده کنید. حالا میتوانید کاملاً native async بنویسید.
| بخش | تغییر | اهمیت |
|---|---|---|
| Python | فقط 3.12+ پشتیبانی میشود | زیاد |
| MariaDB | حداقل نسخه 10.6 | متوسط |
| Admin | آیکونهای Font Awesome 6.7.2 | کم |
| Auth | PBKDF2 iteration count بالاتر | زیاد |
| ORM | بهبود عملکرد query | زیاد |
| API مدرن Python | متوسط |
Django 6.0 یک STS (Short-Term Support) است — نه LTS. یعنی فقط تا Django 6.1 پشتیبانی میشود. اگر پایداری بلندمدت میخواهید، Django 5.2 LTS هنوز گزینه بهتری است.
اما اگر میخواهید از CSP داخلی، Background Tasks، و Template Partials استفاده کنید — وقت آپگرید است.
Django 5.2 آخرین نسخهای است که از Python 3.10 و 3.11 پشتیبانی میکند. اگر هنوز روی این نسخهها هستید، قبل از آپگرید Django باید Python را هم آپگرید کنید.
Django 6.0 نه یک بهروزرسانی تدریجی، بلکه یک mozaic از ابزارهای مدرن و طراحی هوشمندانه است که نحوه نوشتن template امن، ساختار workflow غیرهمزمان، و مقیاسپذیری برنامههای پیچیده را بازتعریف میکند.— Natalia Bidart · Django Core Developer
Django 6.0 همزمان با بیستمین سالگرد این فریمورک (۲۱ ژوئیه ۲۰۰۵) منتشر شد. ۲۰ سال بعد، هنوز یکی از بهترین انتخابها برای web development با Python است.