Django nima? OOP nima?
Bu ikkita atama tez-tez eshitiladi, lekin ular aslida juda oddiy g'oyalar. Keling, IT'siz tushuntiramiz.
1Django — "tayyor jihozlangan oshxona"
Agar siz noldan restoran ochsangiz, har safar pechka, muzlatgich, idish-tovoqni o'zingiz yasashingiz shart emas — tayyor jihozlangan oshxona ijaraga olasiz va faqat retseptlar (taomlar) ustida ishlaysiz.
Django — Python tili uchun ana shunday "tayyor jihozlangan oshxona". Har bir saytga kerak bo'ladigan umumiy narsalarni (parolni xavfsiz saqlash, ma'lumotlar bazasi bilan gaplashish, xato yuzaga kelganda nima qilish) Django allaqachon hal qilib qo'ygan. Dasturchiga faqat o'z loyihasiga xos qism — "retseptlar" (masalan "turnir g'olibini aniqlash mantiqi") qoladi.
Shuning uchun Django'ga "framework" (asos/qolip) deyiladi — u noldan boshlashning o'rniga, tayyor, sinovdan o'tgan fundamentni beradi.
2OOP — "obyektga yo'naltirilgan dasturlash"
Bu — kodni yozish uslubi, aniq texnologiya emas. G'oyasi juda oddiy: dasturdagi har bir tushunchani (Talaba, Turnir, Sport turi, O'yin) real hayotdagi kabi alohida "narsa" (obyekt) sifatida tasvirlash.
Blank-forma misoli: "Talaba" uchun bitta blank-forma tasavvur qiling — unda F.I.Sh., fakultet, telefon, sport turi kabi maydonlar bor (bu — "klass", ya'ni andoza/shablon). Har bir haqiqiy talaba uchun shu blankdan bittadan to'ldirilgan nusxa bo'ladi (bu — "obyekt"). Blank bitta, lekin nusxalar minglab bo'lishi mumkin — har biri o'zining qiymatlariga ega.
TOBB ETÜ Sport'da ham xuddi shunday: "Talaba", "Turnir", "Sport turi", "O'yin" kabi har bir tushuncha uchun bittadan "blank" (klass) yozilgan, va har bir haqiqiy talaba/turnir — o'sha blankning to'ldirilgan nusxasi.
3"App" — loyihaning bo'limlari
Django'da katta loyiha kichik, mustaqil "bo'lim"larga (ular "app" deyiladi) bo'linadi — xuddi bitta binoning turli bo'limlari (buxgalteriya, kadrlar, ombor) kabi. TOBB ETÜ Sport'da 8 ta bunday bo'lim bor:
| Bo'lim (app) | Nima uchun javobgar |
|---|---|
accounts | Talabalar, xodimlar, login/parol |
sports | Sport turlari, murabbiylar (liderlar) |
tournaments | Turnirlar, o'yinlar, natijalar (bracket shu yerda) |
teams | Jamoalar va a'zoligi |
gym | Zalga tashrif so'rovlari |
registrations | Ro'yxatdan o'tish arizalar |
content | Yangiliklar, banner, galereya |
dashboard | Reyting, statistika, qidiruv |
4"Model" — obyektning bazadagi shakli
Yuqorida aytilgan "blank-forma" (klass) Django'da "model" deb ataladi, chunki u bevosita ma'lumotlar bazasidagi jadvalga aylanadi. Masalan, shunday ko'rinishdagi (soddalashtirilgan) kod:
class Talaba:
ism = matn
fakultet = matn
sport_turi = Sport turiga havola
oltin_medal = son
— avtomatik ravishda bazada talaba nomli jadval yaratadi, unda ism, fakultet, sport_turi, oltin_medal ustunlari bo'ladi. TOBB ETÜ Sport'da jami 20 ga yaqin shunday model (demak, 20 ga yaqin jadval) bor.