Django — Python tilida yozilgan, server tomonidagi veb-ilovalarni yaratishga mo‘ljallangan ochiq kodli framework. U URL marshrutlash, HTTP so‘rov va javoblarini qayta ishlash, ma’lumotlar bazasi bilan ishlash, forma tekshiruvi, autentifikatsiya hamda ma’muriy interfeys kabi keng tarqalgan vazifalarni bir butun tizimda taqdim etadi. Django 2005-yilda ochiq manba sifatida chiqarilgan va MTV deb ataladigan arxitektura atamalaridan foydalanadi.
MTV tuzilishi
Djangodagi Model ma’lumot tuzilishi va bazaga murojaatni ifodalaydi. Template foydalanuvchiga yuboriladigan HTML yoki boshqa matnli natijani shakllantiradi. View esa so‘rovni qabul qilib, kerakli model va template bilan ishlaydigan Python funksiyasi yoki klassidir. Bu nomlash klassik MVC bilan aynan bir xil emas, ammo mas’uliyatlarni ajratish maqsadi o‘xshash.
Oddiy so‘rov oqimi quyidagicha kechadi:
- URL dispatcher manzilni mos view bilan bog‘laydi;
- middleware so‘rovni umumiy qoidalar bo‘yicha qayta ishlaydi;
- view model yoki boshqa xizmatlardan ma’lumot oladi;
- template HTML natijani yaratadi;
- javob middleware zanjiri orqali mijozga qaytadi.
ORM va migratsiyalar
Django ORM ma’lumotlar bazasi jadvallarini Python klasslari bilan ifodalaydi. Model maydonlari ustunlarni, model nusxasi esa odatda bitta yozuvni bildiradi. QuerySet so‘rovlarni tuzadi va ko‘p hollarda SQL faqat natija kerak bo‘lganda bajariladi.
class Article(models.Model):
title = models.CharField(max_length=200)
published = models.BooleanField(default=False)
Model o‘zgarganda makemigrations sxema o‘zgarishini migratsiya fayliga yozadi, migrate esa uni bazaga qo‘llaydi. Migratsiya tarixining kod bilan birga saqlanishi turli muhitlarda sxemani izchil yangilash imkonini beradi.
Ichki imkoniyatlar
Django autentifikatsiya tizimi foydalanuvchi, parol xeshlash, session va permission mexanizmlarini beradi. Admin ilovasi ro‘yxatdan o‘tkazilgan modellar uchun boshqaruv interfeysini avtomatik tuzadi. Form va ModelForm klasslari kiritmani tekshirish hamda xatolarni ko‘rsatishni soddalashtiradi. Xavfsizlik qatlamlari CSRF tokeni, XSSdan qochirish, clickjacking sarlavhalari va ORM parametrizatsiyasi kabi himoyalarni o‘z ichiga oladi.
Sinxron va asinxron ishlash
Django WSGI orqali an’anaviy sinxron serverlarda, ASGI orqali esa asinxron serverlarda ishlashi mumkin. Asinxron view uzoq I/O amallarida foydali, biroq barcha kutubxona va middleware asinxron bo‘lmasligi mumkin. Deployda frameworkning o‘zi bilan birga application server, statik fayl xizmati, ma’lumotlar bazasi va konfiguratsiya boshqariladi.
Chegaralari
Django ko‘plab tayyor imkoniyat bergani uchun loyihaning tuzilishi framework qoidalariga bog‘lanadi. Juda kichik HTTP xizmati uchun uning barcha qismlari talab qilinmasligi mumkin. Real vaqtli og‘ir hisoblash yoki fon vazifalari odatda alohida worker, navbat yoki maxsus xizmatga ajratiladi. Framework esa asosan veb so‘rov, domen mantiqi va ma’lumot qatlamini birlashtiradi.
Ilova va loyiha tushunchasi
Django terminologiyasida project umumiy sozlama va URL konfiguratsiyasiga ega butun saytni, app esa ma’lum vazifani bajaradigan qayta foydalaniladigan modulni bildiradi. Bitta project ichida maqolalar, hisoblar va to‘lovlar uchun alohida applar bo‘lishi mumkin. App INSTALLED_APPS ro‘yxatiga qo‘shilganda uning model, signal va boshqa konfiguratsiyasi frameworkga tanitiladi. Bu ajratish har bir kichik katalog mustaqil mikroxizmat degani emas; ular bir Python jarayoni va ma’lumotlar bazasida birga ishlashi mumkin. App chegarasi domen mas’uliyatini tartiblashga xizmat qiladi, lekin ular orasidagi import va model bog‘lanishlari nazoratsiz oshsa, modullilik zaiflashadi.
Bog‘liq tushunchalar
Python, ORM, MTV, WSGI, ASGI, middleware, migration