Django. 1-dars

Django. 1-dars

Oybek


Video darslar

Reja

  1. Freymvork haqida
  2. Buyruqlar oynasi
  3. Virtual muhit
  4. Djangoni o'rnatish
  5. Loyiha yaratish
  6. Loyihaga ilova qo'shish
  7. Kontroller
  8. Marshrut
  9. Model
  10. Migratsiya
  11. Django konsoli


1.Freymvork haqida


Veb freymvork - bu modulli vositalar to'plami bo'lib. Ko'pchilik veb -saytlar

bir xil asosiy funktsiyalarni talab qiladi: ma'lumotlar bazasiga ulanish, URL o'nalishlarini o'rnatish, sahifadagi tarkibni ko'rsatish, xavfsizlikni to'g'ri boshqarish va boshqalar. Bu ishlarni qayta-qayta yozmaslik uchun dasturchilar yillar davomida veb -freymvorklarni yaratdilar. Bunday freymvorklarga misol sifatda Django va Flask (python), Rails (ruby) va Express (javaScript) larni misol qilib keltirish mumkin.

2. Buyruqlar oynasi

Powershell

Buyruqlar oynasini ishga tushirish uchun quyidagi amallarni bajaring:

  1. "Srtart" ni bosing.
  2. "Search programs and files" bo'limiga quyidagini kiriting: powershell
  3. Enter ni bosing.


Ko'p ishlatiladigan buyruqlar ro'yxati:

cd (katalogni o'zgartirish)

cd .. (katalogni o'zgartirish)

ls yoki dir (joriy katalogdagi fayllar ro'yxati)

pwd (joriy katalogni ko'rsatish)

mkdir (katalog yaratish)

clear screen (ekranni tozalash)


Fayllar nomini yozishda tab tugmasidan foydalaning. Buning uchun birinchi harfni yozib tab tugmasini bossangiz, agar shu harfdan boshlanuvchi fayl bitta bo'lsa, qolganini o'zi yozib beradi, agar shu harfdan boshlanuvchi fayl bir nechta bo'lsa, u holda sizga ro'yxatni chiqarib beradi. Siz bitta variant qolguncha harf yozasiz, shunda qolgan harflarni o'zi yozib beradi.

Qo'shimcha ma'lumot


3. Virtual Muhit

pip - paketlarni o'rnatib beradi(package management). Lekin unda bir muammo bor ...


virutalenv - bu izolatsiyalangan python muhiti. Keling bir nechta loyihalar ustida ishlayotganingizda paydo bo'ladigan keng tarqalgan muammo haqida gaplashamiz. Tasavvur qiling, ProjectA ga django == 1,9 kerak, lekin ProjectB ga django == 1,10 kerak.

Odatiy holatda pip django paketini global tizimda saqlaydi. Bu shuni anglatadiki, har safar ProjectA va ProjectB o'rtasida almashishni xohlasangiz, paketlarni to'g'ri versiyasi o'rnatilganligiga ishonch hosil qilishingiz kerak. Bu loyihalar o'rtasida almashishni qiyinlashtiradi, chunki har bir loyiha talablariga javob berish uchun paketlarni olib tashlash va qayta o'rnatish kerak.

Standart yechim - bu virtual muhitdan foydalanish. Shunday qilib, ProjectA va ProjectB ni o'zini alohida virtual muhiti bo'ladi, va loyihaga tegishli virtual muhit orqali bir-biriga halaqit qilmagan holda loyihani ishga tushirish mumkin. Bu keng tarqalgan vosita - virtualenv (yoki Python 3 da venv) orqali amalga oshiriladi.

pipenv

Pipenv - ikki vosita (pip va virtualenv) funksiyalarini jamlagan vositadir. Uni o'rnatish uchun pip vositasidan foydalanamiz:

>pip install pipenv


4. Djangoni o'rnatish

Avval pipenv ni o'rnatamiz

>pip install pipenv

So'ng pipenv yordamida virtual muhit yaratib djangoni o'rnatamiz:

>pipenv insall django

Shunda bizda ikki fayl paydo bo'ladi:

Pipfile

Pipfile.lock

Bu fayllarni ichida virutal muhitda qaysi paketlar, qaysi versiyada o'rnatilgani va boshqa ma'lumotlar bo'ladi.


5. Loyiha yaratish

Loyiha bu bitta katalogda joylashgan bitta biznes mantiqqa tegishli hamma dastur kodlariga(fayllar) aytiladi. Quyidagi komanda yordamida loyiha yaratamiz:

>django-admin startproject dars_1

Shunda quyidagi fayllar paydo bo'ladi:

Loyiha tarkibi

Eng yuqoridagi dars_1 katalog bu loyiha nomi. Ichki dars_1 katalogida loyihaga tegishli sozlash modullari joylashgan. Odatda u loyiha nomi bilan bir hil bo'ladi.

• __init __. py - bu bo'sh fayl bo'lib, u joylashgan katalog paketligini bildiradi;

• settings.py - loyihaga tegishli sozlash moduli. 

Unda loyihaning ma'lumotlar bazasi sozlamalari, asosiy papkalarning yo'llari, muhim parametrlar, xavfsizlik bilan bog'liq va boshqa sozlamlar mavjud;

• urls.py - loyiha darajasidagi marshrut moduli;

• wsgi.py - loyihani WSGI interfeysi orqali veb -server bilan bog'laydigan modul;

• asgi.py - loyihani ASGI interfeysi orqali veb -server bilan bog'laydigan modul;


6. Loyihaga ilova qo'shish

Ilova bu loyihaning biror bo'limi yoki ichki tizimi funksiyasini bajarishi mumkin. Ilova ham aslida paketdan iborat bo'ladi. Uni o'rnatish uchun quyidagi buyruqni yozamiz:

> django-admin startapp news

Natijada bizda news paketi paydo bo'ladi, uni ichida esa quydagi fayllar bo'ladi:

Ilova

□ migrations - bu katalogda Djangoning yangi migratsiyalari saqlanadi

□ admin.py - admin ro'liga bog'liq sozlama moduli;

□ apps.py - dastur sozlamalari moduli;

□ model.py - modellar moduli;

□ tests.py - test moduli;

□ views.py - kontroller moduli.

Endi qo'shilgan ilovani ro'yxatdan o'tkazamiz. Uning uchun loyihaning katalogi ichida joylashgan settings.py moduliga kiramiz. U yerda INSTALLED_APPS ro'yxatiga ilova_katalogi.apps.Klass_nomi ko'rinishida qo'shamiz:

settings.py - ilova sozlamasi moduli


7. Kontroller

Avval klinetdan ketadigan so'rov (request) va serverdan keladigan javob (response) bilan tanishib o'taylik.

Request va response

Mijoz brauzerdan biron manzilni yozganda serverga so'rov ketadi, server usha so'rovni olgandan keyin ma'lumotlarni qayta ishlab, ma'lum formatda javob jo'natadi. U sahifa ko'rinishida (.html), .xml , .json va boshqa formatlarda bo'lishi mumkin.

Server so'rovga tegishli javob qaytarish aynan kontrollerni vazifasidir

Kontroller - bu Internet manziliga kirganda bajariladigan kod, natijada javoban ma'lum bir formatda ma'lum bir veb - sahifani ko'rsatadi.

Kontroller 2 hil ko'rinishi mavjud: funksiya va class.

Kontroller yozish uchun ilova katalogida joylashgan views.py ga kiramiz, so'ng quyidagi kodni yozamiz:

from django.http import HttpResponse

def index(request):

return HttpResponse('Yangiliklar:')


8. Marshrut

Klientdan keladigan so'rovni ma'lum kontroller bilan bog'lash marshrut bilan amalga oshiriladi. So'rovni ikkiga bo'lamiz. Domen qismi va yo'li.

www.gazeta.uz/edit/

Bu yerda www.gazeta.uz - domen, edit/ esa yo'li. Marshrutga yo'li yoziladi. Marshrut vazifasini urls.py moduli bajaradi

Mijozdan so'rov kelganda birinchi urls.py moduliga keladi, urls.py qaysi yo'lga qaysi kontrollerni chaqirish kerakligi belgilangan bo'ladi. Keyin views.py ichidagi tegishli kontroller ishga tushadi. Kontroller models.py da joylashgan modellar va/yoki shablonlarni ishlatgan holda mijoz javobni (response) qaytaradi

So'rovdan javobgacha umumiy sxemasi

Marshrut yozishni ikki usuli bor.

1-usul. Har bir kontrollerni alohida yozib chiqish. Buning uchun loyihaning asosiy katalogida joylashgan urls.py ga quyidagi o'zgartirishni kiritamiz:

2-usul. Marshrut vazifasini bajaruvchi faylni ko'rsatib qo'yamiz. Buning uchun tegishli ilova ichiga urls.py nomli modul yaratamiz. Ichiga quyidagini yozamiz:


yangiliklar/urls.py

So'ng loyiha katalogida joylashgan urls.py ga quyidagi o'zgartirish kiritamiz:

dars_1/urls.py

9. Model

Model - bu ma'lumotlar bazasidagi ma'lum bir jadvalni tasvirlaydigan sinfdir(class). Jadvaldagi ustunlar, class da hususiyatlarga aylanadi. Model sinfining namunasi (obyekti) jadvaldagi bitta qatorni bildiradi. Model ma'lumotlar bazasidan (MB) qiymatlarni olish imkonini beradi.

Model hech qanday MBga bog'lanmagan. PostgreSQL, SQlite va boshqalar uchun bir hil bo'ladi

Modellar ilova paketining ichida joylashgan model.py modulida e'lon qilinadi. Dastlab u modul bo'sh bo'ladi.

Endi quyidagi jadval modelini tuzamiz:

Uni yangiliklar/models.py ga kiritamiz:

yangiliklar/model.py

Quyidagi sinf maydonlari turlarini ko'rib chiqamiz:

□ CharField - belgilangan uzunlikdagi matnni saqlash uchun maydon;

□ TextField - cheksiz uzunlikdagi matnni saqlash uchun maydon.

null=True parametri maydon bo'sh bo'lishi mumkinligini bildiradi.

blank=True esa bo'sh matn bo'lishi mumkinligini bildiradi

max_length=300 - matn uzunligi maksimum 300 bo'lishi mumkinligini bildiradi.

□ FloatField - haqiqiy sonlarni saqlash uchun maydon;

□ DateTimeField - sana va vaqtni saqlash uchun maydon.

auto_add_now=True avtomat hozirgi sanani qo'shish uchun ishlatiladi.

index=True jadvalni sana bo'yicha tartiblashda tezlikni ochirib beradi, ya'ni jadvalni indekslaydi


10. Migratsiya

Migratsiya - bu berilgan modelga ko'ra yaratiladi va yaratilgan fayllar 

ma'lumotlar bazasini, strukturasi (jadval, maydonlar, indekslar, qoidalar) yaratishda ishlatiladi

Migratsiya yaratish uchun quyidagi komandani yozamiz:

>python manage.py makemigrations

Natijada bizda migratsiya fayllari paydo bo'ladi:

0001_initial.py - bu paydo bo'lgan migratsiya fayli.

Hohlasak sql so'rovni ko'rishimiz mumkin. Uning uchun ilova nomi va migratsiya raqamini yozishimiz kerak:

>manage.py sqlmigrate yangiliklar 0001

Endi u yordamida biz MB yaratish, o'zgartirish kiritish mumkin. Uning uchun quyidagi buyruqni yozamiz:

>python manage.py migrate

Endi biz MBga ma'lumot kiritishimiz, olishimiz, o'zgartirishimiz va o'chirishimiz mumkin

11. Django konsoli

Shunday qilib, bizda yangiliklarni saqlash uchun tayyor model mavjud. Ammo hozircha MBda hech qanday yangilik. Endi MBga ma'lumot kiritishimiz kerak. Uning uchun bizga Django konsoli kerak bo'ladi.

Django Console ham Python Shell kabi, farqli jihati shundaki, ushbu konsol ishga tushirilganda loyiha katalogi yo'li qidirish yo'llariga qo'shiladi. Natijada biz kerakli sinfni to'g'ridan-to'g'ri import qilib ishlatsak bo'ladi.

Django konsolini ishga tushirish uchun quyidagini buyruqlar oynasiga yozing:

>python manage.py shell







Report Page