Django veb freymvorki haqida
uz_python
Siz dasturchimisiz? Demak sizga ajoyib dasturlash tili va "instrument"lar kerak. Yaxshi "instrument" yoki dasturlash tilini topish bu - oddiy yoki tez hal bo'ladigan masala emas.Bu borada ko'plab muammolarga duch kelish ham mumkin.Maqolamni ajoyib "instrument" yoki freymvorki sifatida sanalyotgan Djangoga bag'ishladim.Siz Django haqida eshitganmisiz? Maqolam davomida Django va uning qanday ishlashi haqida ma'lumot berib o'taman.
Freymvorkining nega bunday atalishi haqida

Freymvork nomi aynan Fransuz jazz gitaristi Django Reynxardtning sharafiga qo'yilgan!
P.S. Django Reynxardtning barmoqlarida biroz nuqsoni bo'lsada,gitarada haddan tashqari ajoyib musiqalar ijro etgan!
Django nima va u qanday ishlaydi?
Django - python dasturlash tilida veb ilovalar ishlab chiqish uchun ajoyib freymvork. Freymvork python dasturlash tilida yozilgan. Django freymvorki birinchi bor 2005-yil 21-iyulda ishga tushirilgan. Loyihani ishlab chiquvchilari Django Software Foundationdir va loyiha ular tomonidan qo'llab-quvvatlanadi. Dasturchilar: Rasl Keyt Magi, Adrian Holovaty, Saymon Vilson, Yakob Kaplan Moss, Uilson Mayner. Freymvork krossplatformalikdir(ya'ni barcha operatsion tizimlarni qo'llab quvvatlaydi). Djangoda yaratilgan sayt bir yoki bir nechta ilovalardan tashkil topishi mumkin. Bu esa freymvorkning arxitekturasini boshqalaridan farqli jihatidir (Misol uchun:Ruby on Rails).
Xulosa: Django bu veb freymvork.
Freymvorkning ishlash prinsplaridan biri bu - DRY (Don't repeat yourself- "o'z-o'zingni takrorlarma"). Bu degani, siz sayt yozish davomida siz "velosiped"ni qaytadan ixtiro qilmaysiz, u siz uchun tayyor. Ya'ni bir kodni qaytadan yozishga hojat yo'q, bu esa veb ilovaning yaratilish protsessini tezlashtiradi.
Boya aytib o'tganimdek, Django 2005-yilda ishlab chiqildi va shu vaqtdan boshlab bosqichma-bosqich eng yaxshi freymvorklar qatoridan o'rin egalladi. Freymvork dasturchilarning muammolarini bir necha daqiqa mobaynida hal etib bermoqda. Django veb ilovalarning yozilish jarayonini sezilarli darajada yengillashtirdi va veb ilovalar yaratish uchun ajoyib, soddalashtirilgan yo'lni taqdim eta oldi.
Freymvork MVC loyihalashtirish shablonidan foydalanadi:

MVC - "Model View Controller" ya'ni : Model(model- ma'lumotlarni o'zida saqlaydi va controller buyruqlariga asoslanib o'z holatini o'zgaritiradi),View (ko'rinish yoki interfeys - ma'lumotlarning tashqi ko'rinishini ta'minlaydi), Controller(boshqaruvchi -ya'ni foydalanuvchi harakatlarini interpretatsiya qiladi)
MODEL - Djangoning rasmiy qo'llanmasida(django documentation) model bu "ma'lumotlarning manbasi" ekanligi haqida aytilgan. U o'zida kalit so'zlar va ma'lumotlarni saqlaydi. Qisqa qilib aytganda ma'lumotlar "jadval" ko'rinishida saqlanadi va buning uchun Djangoda:PostgreSQL, MySQL, SQLite va Oracle kabi ma'lumotlar omborlarini qo'llab quvvatlaydi.
VIEW- view 3ta asosiy muammoni hal qiladi:HTTP so'rovlarni qabul qiladi,HTTP so'rovlarni yuboradi,TEMPLATES ya'ni shablonlar.
Djangoning boshqa freymvorklardan yana boshqa bir farqi, freymvorkdagi URLlarga ishlov beruvchilar(url handlers) regular expressions yordamida konfiguratsiya qilinadi.
Djangoda ORM tushunchasi
Djangoda ma'lumotlar ombori(ma'lumotlar bazasi) bilan ishlash uchun o'zining ORMini ishlatadi va obyektning modelini pythondagi klasslar yordamida aniqlaydi, shu orqali ma'lumotlar ombori sxemasi shakillanadi:

ORM - "Object-Relational Mapping". Dasturlashning bu texnologiyasi ma'lumotlar omobori bilan uzviy bog'liq bo'lib, obyektga yo'naltirilgan dasturlash tilllari konsepsiyasi asosida ishlaydi va virtual "obyektlar ma'lumotlar omborini" yaratadi.
Shuni quvonarliki, freymvorkdagi ORM sababli dasturchi uchun ma'lumotlar ombori bilan ishlay oladigan maxsus tilni bilish talab etilmaydi! ORM kodni minimal ravishda o'zgartirgan holatda ma'lumotlar omboriga kirish imkoniyatini beradi.

Shablonlar haqida
Django freymvorki shablonlar uchun o'zining kuchli "yuritkichi"(движок) va maxsus belgilash tiliga ega. Shablonlar o'zida html kodlarni jamlagan va ular yordamida ma'lumot taqdim etiladi. Saqlangan fayl statik yoki dinamik bo'lishi mumkin. Shablonlar o'zlarida hech qanday biznes logikalarni saqlamaydi. Shunchaki ma'lumotlarni taqdim etadi

Django freymvorki hozirgi kunda ko'plab yuqori yuklanishga(нагрузка) ega bo'lgan masalalarni hal etmoqda. Freymvorkni quyidagilar uchun qo'llashadi:
- CRM tizimlari.
- CMS.
- Komunikatsion platformalarda.
- Raqamlarni bron qilish servislarida.
- Hujjatlarni almashish vazifasini bajaruvchi platformalarda boshqaruv sifatida qo'llanadi.
- API qurishda.
Kutubxonalar
Taniqli dasturlash tillarida kutubxonalar mavjud va ular yordamida muammolarga ajoyib yechimlar topsih mumkin. Kutubxonalarda tayyor yechimlarni: funksiyalarni,klasslarni,konfiguratsiyalar va hokazolarni topish mumkin. Kutubxonalar sabab dasturlash tilining imkoniyatlari oshadi va dastur tayyorlash jarayonini ham yengillashtiradi.
Shu jumladan, Django ham veb ilovalar yozish davomida kutubxonalardan foydalanadi. Bunday kutubxonalar qatoriga quyidagilarni keltirish mumkin:
- Django REST Framework - API lar bilan ishlash jarayonini yangillashtiradi.
- Django CMS - Kontentni boshqarish uchun qulay "instrument".
- Django-all auth - bu kutubxona yordamida registratsiya, avtorizatsiya, hisob(akkaunt) funksiyalarini amalga oshirish mumkin.
Djangoda foydali kutubxonalar talaygina.
Django freymvorkining imkoniyatlari va ba'zi afzalliklari
- ORM,APIlarning tranzaksiya yordamida ma'lumotlar omboriga kirish huquqining berilishi.

- Administrator paneli interfeysining oldindan mavjudligi.Qo'shimcha sifatida bu interfeys ko'plab tillarga tarjima qilingan.Qisqa qilib aytganda, admin paneli tayyor:)
- URL dispetchirining mavjudligi(regular expressionsga asoslanganligi albatta).
- Keng ko'lamdagi shablonlarning mavjudligi.
- Keshlash tiziming mavjudligi(система кеширования).
- Internatsionallik ya'ni mahsulotning boshqa tillarda ham adaptivligi(Dasturlash tillari nazarda tutilmagan).
- "Generic views" - boshqaruv funksiyasining shablonlari.
- Avtorizatsiya va autifikatsiya.Tashqi autifikatsiya modullarga ulanganlik : LDAP,OpenID va hokazolar.
- Formalar bilan ishlash imkoniyatini beruvchi kutubxonalarning mavjudligi(mavjud ma'lumotlar omborining modeliga asoslangan holatda formalar yaratish).
Djangoda server konfiguratsiyasi
Django Apache boshqaruvi mod python moduli bilan birgalikda va PostgreSQLni ma'lumotlar ombori sifatida ishlatish uchun loyihalashtirilgan.

WSGI qo'llab-quvvatlashi sababli Django FastCGI, mod wsgiyoki SCGI Apache serverida((lighttpd, nginx,…), uWSGIkabilarning boshqaruvi ostida ishlay oladi.

WSGI - ("Web Server Gateway Interface") - Python dasturlash tilidagi dastur bilan server tomonidan amalga oshiriladigan harakatlar o'rtasidagi muloqotni amalga oshiruvchi standart.
Ayni paytda Django faqatgina PostgreSQLma'lumotlar ombori bilan emas, MySQL, SQLite, Microsoft SQL Server, DB2, Firebird, SQL Anywhere va Oraclekabi ma'lumotlar ombori bilan ishlay oladi.

Django freymvorki o'zining shaxsiy veb serveri mavjud (yuqoridagi rasmga qarang). Bu server fayllardagi o'zgarishlarni avtomatik ravishda aniqlaydi va loyiha fayllaridagi kodni qayta ishga tushiradi. Bu esa pythonda veb ilovaning ishlab chiqilish vaqtini sezilarli darajada tezlashtiraladi.
Djangoda hosting
Djangoda loyihalashtirligan veb ilovani RedHatning PaaSservislariga joylashingiz mumkin:
- OpenShift, ayni paytda unda hosting bepul :)
- Heroku
- PythonAnywherening hostinglari
Googleda Django uchun hosting
Google App EnginePython bizga Djangoning istalgan talqini("versiyasi") bilan ishlash imkonini beradi.
Google App Engine Pythonda Django bilan ishlash bilan bo'gliq afzalligi:
- Django freymvorki Google-cloud-sql bilan ishlay oladi. Bu freymvorkning barcha imkoniyatlarini ishga solishga, shu jumladan oddiy relyutsion ma'lumotlar ombori bilan ishlash imkoniyatini bera oladi.
P.S Agarda siz djangoda veb ilova yaratgan bo'lsangiz, uni google app engine hostingiga joylashingiz va bepul domen olishingiz mumkin.Misol uchun: vebilova.appspot.com.
https://t.me/uz_python