Django LTS 4.2 versiyasi: o’zgarishlar va yangilanishlar haqida o’qiysiz.
2023-yil aprel oyida eng mashhur Python veb-ishlab chiqish freymvorklaridan (framework — maqola davomida «freymvork» deb yuritiladi) biri bo‘lgan Django Web Framework’ning yangi LTS versiyasi chiqdi.
«Yangi versiya chiqdi! Nega haligacha unga o’tmading ?» — bu savol ko’pincha dasturlash kurslarida ushbu freymvorkni o’rganayotgan talabalar orasida paydo bo’ladi. Shunga o’xshash savolni yaqinda backend’da ishlab chiquvchi (dasturchi) sifatida ish boshlagan yangi mutaxassisdan ham eshitish mumkin.
Yangi Django loyihasini boshlash yoki ushbu freymvorkni hozir o’rganishga arziydimi?
Ushbu maqolada men sizga bu va boshqa savollarni hal qilishga yordam beraman. Biz Django relizlarining har xil turlari haqida gaplashamiz, yangisidagi asosiy o’zgarishlarni ko’rib chiqamiz va loyihada Django versiyasini yangilashda e’tiborga olinadigan asosiy jihatlarga to’xtalib o’tamiz.
Yakuniy chiqarishlar, nashrlar (relizlar) farqi
Birinchidan, ishlab chiquvchilar uchun mavjud bo’lgan turli xil freymvork yangilanishlarini ko’rib chiqaylik. Ular uchta asosiy toifaga bo’linadi:
— Ficha relizlar (Feature releases). Bu odatda har sakkiz oyda chiqadigan dastur yangilanishlari hisoblanadi. Ular yangi xususiyatlar, imkoniyatlar, optimallashtirish va mavjud komponentlarni yaxshilashni o’z ichiga oladi.
— Patch relizlar (Patch releases). Ushbu yangilanishlar kerak bo’lganda chiqariladi va dasturning tegishli versiyalarida topilgan xatolar, xavfsizlik muammolari va boshqa muammolarni hal qilish uchun mo’ljallangan bo’ladi. Bunday «yamoq» relizlari ishlab chiquvchilarga o’z mahsulotlarining barqarorligi va xavfsizligini ta’minlash imkonini beradi.
— LTS relizlari (Long-term support releases). Ba’zi ficha relizlari LTS holatini oladi, bu «uzoq muddatli qo’llab-quvvatlash» degan ma’noni anglatadi. Ushbu relizlarda xavfsizlik va barqarorlik tuzatishlari odatda uch yil bo’lgan ma’lum vaqt oralig’ida chiqarilishi kafolatlanadi. Bu ishlab chiquvchilarga tanlangan versiya tezda eskirib qolishdan yoki ishlab chiqish guruhi tomonidan qo’llab-quvvatlashni tugatishdan qo’rqmasdan o’z loyihalari uchun freymvorkning barqaror versiyalaridan foydalanish imkoniyatini beradi.
Django 4.2 LTS versiyasidagi asosiy o’zgarishlari
Har safar dasturiy ta’minotning yangi versiyasi chiqarilganda, u kiritilgan barcha o’zgarishlarning batafsil ko’rinishi bilan birga keladi. Keling, rasmiy yo’riqnoma asosida 4.2 versiyasida nima o’zgarganini ko’rib chiqaylik.
Psycopg 3 kutubxonasi qo’shildi
django.db.backends.postgresql — bu PostgreSQL bilan ishlash uchun Django ma’lumotlar bazasi adapteri. Ushbu adapter PostgreSQL-ning o’ziga xos funksiyalarini amalga oshirishni ta’minlaydi va ushbu ma’lumotlar bazasidan Django ilovasida foydalanish imkonini beradi.
Endi modelni tavsiflashda jadval va uning ustunlariga sharhlar qo’shish mumkin
from django.db import models class Post(models.Model): text = models.TextField(db_comment='Post text') pub_date = models.DateTimeField( db_comment='Date and time when the post was published', ) class Meta: db_table_comment = 'Post details'
BREACH hujumlaridan yaxshilangan himoya
BREACH (Browser Reconnaissance and Exfiltration via Adaptive Compression of Hypertext) so’zining kengaytmasi gipermatnni adaptiv siqish orqali brauzerni tekshirish va eksfiltratsiyani anglatadi. «Hech narsaga tushunmadimku !» deyishga shoshilmang !Bu maxfiy ma’lumotlarga kirish uchun ma’lumotlarni siqish va kriptografiyadan foydalanadigan veb-ilovalarga hujumdir. Bu murakkab tuyuladi, lekin amalda bu oson. Shunchaki maxsus bilimlarni talab qiladi holos.
Xotiradagi fayllarni saqlash imkoniyati paydo bo’ldi
django.core.files.storage — bu Django moduli bo’lib, u fayllarni saqlash bilan ishlash mexanizmlarini taqdim etadi. U turli xil saqlash tizimlarida fayllarni qayta ishlash va saqlash imkonini beruvchi asosiy Storage klasi va bir nechta standart dasturlarni o’z ichiga oladi. Tushungan odamlar uchun bu imkoniyat ancha yengillik sanaladi.
Python muvofiqligi
Django 4.0 versiyasidan boshlab, Django Python 3.7 va undan past versiyalari bilan mosligini kafolatlamaydi. Endi agar sizda Python 3.7 dan past versiyada Python o’rnatilgan bo’lsa bu yangilanishlar sizni Python’ingizni qo’llab quvvatlamaydi ovora bo’lmang.
Vaqt zonalari bilan ishlash
Django 4.0 va undan yuqori versiyalari vaqt zonalarini qo’llab-quvvatlash uchun Python 3.9 standart kutubxonasining bir qismi bo’lgan zoneinfo modulidan foydalanadi. Agar Python 3.8 dan foydalansangiz, backports.zoneinfo to’plami endi Django bilan avtomatik ravishda qurilmangizga o’rnatiladi.
Redis qo’llab-quvvatlash
Redis-dan foydalanib keshlashni ta’minlash uchun yangi django.core.cache.backends.redis.RedisCache qo’shildi.
ORM uchun asinxron interfeys
Django ishlab chiquvchilari asta-sekin asinxroniy yordamni freymvorkga kiritmoqdalar. Asinxron ko’rinishlar va bunday yordamchi dastur Django 3.1 da paydo bo’lgan edi endi 4.1 versiyasidan boshlab Django ORM asinxron so’rovlarni bajara oladi, garchi ORMning o’zi sinxron bo’lib qolsada.
class’ga asoslangan ko’rinishlar (class based views) uchun asinxron usullarni qo’llab-quvvatlash
4.1 versiyasidan boshlab, class view’larini yozishda sinxron usullardan tashqari, asinxron usullarga ham ruxsat beriladi. Lekin siz ularni aralashtira olmaysiz: barcha usullar sinxron (def bilan belgilangan) yoki asinxron (async def bilan belgilangan) bo’lishi kerak. Django avtomatik ravishda asinxron ko’rinishlarni aniqlaydi va ularni asinxron kontekstda bajaradi.
Yangi versiyaga qachon o’tish kerak?
Agar sizda hozirda LTS 3.2 versiya bo’lsa u holda unda ishlashda davom eting, sababi aynan shu versiyada bugungi kunda juda ko’plab loyihalar ishlab chiqilmoqda va ishlab chiqilgan. Uni qo’llab quvvatlash davom etayotganini inobatga olsak yangi versiyaga faqatgina loyihadan kelib chiqib undagi imkoniyatlar loyihangiz uchun zarur ekanligini his qilganingizdagina o’tishni maslahat beraman.
Freymvorkni o’rganishda Django-ning qaysi versiyasidan foydalanish yaxshiroq?
Yangilar uchun 3.2 ni tanlashlari maqsadga muvofiq, sababi 4.2 da yuqorida aytganimdek aytarlicha o’zgarishlar qilingan va bu ko’plab maxsus bilimlarni talab qiladi.
Ammo shuni ta’kidlash joizki, o’rganish natijasi o’quv loyihalarida ishlatiladigan Djangoning o’ziga xos versiyasiga bog’liq emas. Freymvork o’z tamoyillarini har hil versiyalar bilan o’zgartirib tashlamaydi. Masalan 2.1 chap yo’ldan yurib 3.1 da o’ng yo’lga o’tib olish degan narsalar yo’q. Agar o’zgarishlar bo’lsada ular yuqorida keltirilganidek ma’lum bir maxsus imkoniyatlar va funktsiyalarni o’zgartiradi.
Yangi loyihani Djangoda boshlash arziydimi?
JetBrains tadqiqotlariga ko’ra, Python-dagi mavjud veb-loyihalarning muhim qismi uchta freymvorkdan biri yordamida yozilgan: Django, Flask yoki FastAPI
Maqola foydali bo’ldimi ? Uni albatta kerakli insonlarga ulashib qo’ying. Bizni telegram va instagramda ham qo’llab quvvatlang, toki biz ham sizga yetkazib berilayotgan relizlarimizni (maqolalarimizni) LTS qilaylik 🙂
Umumiy Dasturlash
Django LTS 4.2 versiyasi: o’zgarishlar va yangilanishlar haqida o’qiysiz.