IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

2. diel - Zoznámenie s Django frameworkom pre Python

V minulej lekcii, Úvod do Django frameworku a webových aplikácií v Pythone , sme si urobili úvod do webových aplikácií.

V dnešnom tutoriáli webových aplikácií s frameworkom Django sa vrhneme na samotný framework Django. Najprv si ho nainštalujeme a potom vytvoríme svoju prvú webovú aplikáciu v Pythone. Dôkladne si vysvetlíme routovanie.

Inštalácia Django

Na inštaláciu Django 4.2.1 potrebujeme Python vo verzii 3.8 alebo novšej. Django nainštalujeme nasledujúcim príkazom, ktorý vložíme do príkazového riadka:

py -m pip install Django==4.2.1

V príkazovom riadku uvidíte výstup:

Výstup instalace:
C:\Users\tomse>py -m pip install Django==4.2.1
Collecting Django==4.2.1
  Downloading Django-4.2.1-py3-none-any.whl (8.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.0/8.0 MB 9.0 MB/s eta 0:00:00
......
Installing collected packages: Django
Successfully installed Django-4.2.1

Pozor, musíme dodržať presné verzie modulov, komponentov a skrátka všetkých verzovaných prvkov! V Django budeme neskôr vytvárať celkom pokročilý projekt, ktorý závisí od množstva knižníc, databázy atď. Použiť najnovšiu verziu nejakej komponenty, čo práve včera vyšla, naozaj nie je dobrý nápad. Projekt potom bez odbornej úpravy pravdepodobne nebude fungovať! Za dobrý príklad poslúži knižnica Pandas, ktorá vo verzii 2.0 stratila podporu pre metódu append(). Nahradila ju metóda concat(), samozrejme s inou syntaxou. Pri verziách knižníc, modul atď. skrátka neplatí ako napr. pri aktualizácii Windows, že chceme každý deň používať tú najnovšiu. Neustále aktualizácie všetkého by totiž vyžadovali každodenné a komplexné zmeny kódu projektu a reálne sa tak nevykonávajú. Z rovnakého dôvodu aj my aktualizujeme kurzy v pravidelných intervaloch a nové verzie k sebe potom zladíme tak, aby všetko fungovalo.

Vytvorenie projektu

Vytvoríme si prvý projekt s názvom mysite. Opäť k tomu použijeme príkazový riadok, tentoraz ho musíme otvoriť v našej zložke s Pythonom, a zadáme nasledujúci príkaz:

django-admin startproject mysite

Po vložení príkazu sa nič nevypíše. Django za nás vytvoril štruktúru projektu. Projekty v Djangu totiž majú určité pravidlá, ktorými by sme sa mali riadiť. To si budeme pochvaľovať najmä pri väčších projektoch, aj keď pri tých menších nám to zo začiatku môže pôsobiť trochu zmätok. V našej zložke s Pythonom sa nám však vytvoril nový adresár mysite/. Otvorme si ho.

Adresárová štruktúra Django projektu

Obsah zložky vyzerá nasledovne:

mysite\
    mysite\
        __init__.py
        settings.py
        urls.py
        wsgi.py
    manage.py

Jednotlivé súbory si teraz popíšeme:

  • settings.py - tu sa nachádza konfigurácia projektu a tu tiež inštalujeme svoje aplikácie, viď ďalej,
  • urls.py - tu je uložená schéma, ktorá hovorí, ako sa má spracovať URL adresa, ktorú používateľ do prehliadača zadá. Definujeme tu, aké adresy smerujú na aké časti našej aplikácie. Tomuto mechanizmu sa hovorí routovanie,
  • wsgi.py - konfigurácia rozhrania pre nasadenie webovej aplikácie na server,
  • manage.py - o zložku vyššie sa nachádza manage.py, pre nás najdôležitejší súbor. Umožňuje nám spúšťať rôzne príkazy. Použijeme ho napr. na migráciu databázy, vytváranie aplikácií, zber statických súborov a ďalšie podobné účely.
Spustenie servera

Z úvodnej lekcie už vieme, že na to, aby sme mohli k našej aplikácii pristúpiť cez webový prehliadač, potrebujeme server.

Spustenie servera vykonáme spustením príkazu cez súbor manage.py. Na to potrebujeme otvoriť príkazový riadok v priečinku mysite\, kde sa tento súbor nachádza.

Zadáme príkaz:

py manage.py runserver

Po chvíli sa do konzoly vypíše:

Konzolová aplikácia
C:\Users\tomse\AppData\Local\Programs\Python\mysite>py manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

May 29, 2023 - 14:09:22
Django version 4.2.1, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

Pokiaľ sa nám príkaz nevykonal, uistíme sa, že sme v správnej zložke, zložky mysite/ sú v našom projekte dve.

Naša aplikácia teraz beží na našom lokálnom serveri na adrese http://localhost:8000/. Zadáme túto adresu do svojho webového prehliadača alebo klikneme na odkaz v konzole. Uvidíme uvítaciu stránku Django frameworku:

Spustený Django server. - Tvorba webov v Django frameworku pre Python - Tvorba webov v Django frameworku pre Python

V príkazovom riadku sa budú vypisovať všetky požiadavky na server.

Pokiaľ budeme chcieť server ukončiť, stlačíme Ctrl + C.

Vytvorenie aplikácie

Projekt aj prostredie máme pripravené. Môžeme teda začať s tvorbou našej aplikácie. Django má v tomto ohľade trochu netradičné názvoslovie. Projekt tu môže obsahovať viacero aplikácií. Tie fungujú ako moduly, typicky máme napr. administráciu oddelenú od hlavnej aplikácie. Častejšie sa stretávame s pojmami aplikácie a modul ako projekt a aplikácie, význam je ale úplne rovnaký.

Pre túto chvíľu teda ukončíme beh servera a vytvoríme si v projekte aplikáciu (modul) s názvom ahoj_svete. Urobíme tak príkazom v termináli (opäť v zložke mysite/):

py manage.py startapp ahoj_svete

Adresárová štruktúra Django aplikácie

Django za nás všetko potrebné vytvorí, to je jeho výhoda oproti napr. Flask frameworku. V priečinku projektu sa nám vytvorí nový adresár. Jeho obsah vyzerá nasledovne:

mysite/
    ahoj_svete/
        __init__.py
        admin.py
        apps.py
        models.py
        tests.py
        # urls.py
    # Ostatní zůstává stejné

Jednotlivé súbory si opäť popíšeme:

  • admin.py - administrácia jednotlivé aplikácie,
  • apps.py - konfigurácia jednotlivé aplikácie,
  • models.py - správa modelov databázy, Django ORM, viď ďalej v kurze,
  • tests.py - testy aplikácie,
  • urls.py - tento súbor sa nevytvorí, musíme ho vytvoriť manuálne. Budú tu odkazy na Python skripty, ktoré požiadavky zaslané cez dané URL adresy spracujú.
Štruktúra adresárov môže na prvý pohľad pôsobiť zmätočne, ale po chvíli používania začne dávať zmysel. Keď budeme Django používať pri tvorbe väčšej aplikácie, túto štruktúru veľmi oceníme.

Inštalácia aplikácie

V súbore mysite\mysite\settings.py aplikáciu "nainštalujeme". Django musí mať prehľad o tom, kde má svoje aplikácie a koľko ich má. Pri tejto aplikácii inštalácia nie je nutná, ale je lepšie si zvyknúť inštalovať všetky naše aplikácie, aby sme splnili princípy Django frameworku. Inštaláciu vykonáme pripísaním názvu aplikácie do settings.py, do časti označenej komentárom # Application definition. Výsledný zoznam vyzerá takto:

INSTALLED_APPS = [
    'ahoj_svete',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

Routovanie

Dostávame sa do bodu, kedy musíme zaistiť, aby otvorenie URL adresy servera otvorilo aplikáciu ahoj_svete. Keďže je postup zložitejší, vysvetlíme si hneď na začiatku, čo potrebujeme docieliť. Adresu servera (http://localhost:8000/) napojíme zo súboru urls.py projektu cez súbor urls.py aplikácie až na našu prvú Python metódu, ktorá užívateľovi pošle onú "Hello world!" hlášku späť do prehliadača. Poďme na to!

Postup požiadavky bude nasledujúci:

http://localhost:8000/ -> urls.py (projekt) -> urls.py (aplikace) -> metoda index()

Routovanie projektu

V súbore mysite\mysite\urls.py pridáme routu na našej aplikácii. Keďže táto routa bude definovaná v routach aplikácie, teda v súbore mysite\ahoj_svete\urls.py, tento súbor sem iba naincludujeme, aby sme ju nemuseli písať dvakrát. Všetky routy definované v aplikácii sa potom samy prenesú do rout projektu a budú fungovať.

Keďže budeme chcieť, aby sa aplikácia ahoj_svete spustila priamo po otvorení adresy servera (localhost:8000/), namiesto adresy uvedieme len prázdny reťazec "". Do súboru urls.py si pridajme routu na ahoj_svete.urls. Nezabudneme pridať aj import pre include():

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path("admin/", admin.site.urls),
    path("", include("ahoj_svete.urls")),
]

Routovanie aplikácie

Všetky routy budeme už definovať len v zložke aplikácie. Prejdime do zložky ahoj_svete/ a tu vytvorme súbor urls.py. Tam pridáme URL adresu našej prvej stránky. Tu už adresu navedieme na tzv. view. To je Python metóda, ktorá požiadavku spracuje a vráti užívateľovi výsledok. Kto je oboznámený s MVC architektúrou si najskôr všimne, že aj tu Python používa iné názvoslovie. Viac si k MVC architektúre povieme neskôr. Obsah tunajšieho súboru urls.py bude nasledovný:

from django.urls import path
from . import views

urlpatterns = [
    path("", views.index, name="index"),
]

Docielili sme to, že otvorenie adresy servera cez routy projektu zavolá routy aplikácie ahoj_svete a cez ne otvorí view s názvom index(). Zopakujme si schému:

http://localhost:8000/ -> urls.py (projekt) -> urls.py (aplikace) -> metoda index()

Pridanie view

View je teda posledná časť reťazca, ktorá požiadavku užívateľa zachytí a odpovie naň. Jedná sa o Python metódu. Rôzne URL adresy napájame na rôzne views, teda rôzne metódy. My máme v aplikácii zatiaľ len jednu, aby toho nebolo na začiatok veľa.

Vytvoríme si teda view pre zobrazenie hlášky "Ahoj svete!" Prejdeme do súboru mysite\ahoj_svete\views.py, kde si vytvoríme metódu index(). Jej parametrom bude request, požiadavka, ktorá prišla cez URL adresu. Našu hlášku nezobrazíme ako HTML stránku, ale ako obyčajný text vrátením inštancie typu HttpResponse(). Kód danej metódy je nasledujúci, nezabudneme si pridať aj HttpResponse do importov:

from django.shortcuts import render, HttpResponse

def index(request):
    return HttpResponse("Ahoj světe!")

Všetko si uložíme. Znovu spustíme v termináli server a otvoríme adresu aplikácie v prehliadači, pripomeňme, že je to http://localhost:8000/. A takto vyzerá naša prvá stránka vytvorená pomocou Django frameworku, ktorá zobrazuje našu obľúbenú hlášku:

localhost:8000
localhost:8000

Dnešná lekcia bola trochu náročnejšia, ale tým, že sa nám podarilo požiadavku narútovať až do view index() a hlášku zobraziť, sme dosiahli výrazný pokrok. Zdrojový kód je priložený na konci lekcie.

V ďalšej lekcii, Predstavenie MVC a MVT architektúry v Django , si vysvetlíme, ako funguje MVC architektúra, teda presnejšie jej MVT verzia, ktorú Django používa.


 

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 1179x (9.37 kB)

 

Predchádzajúci článok
Úvod do Django frameworku a webových aplikácií v Pythone
Všetky články v sekcii
Tvorba webov v Django frameworku pre Python
Preskočiť článok
(neodporúčame)
Predstavenie MVC a MVT architektúry v Django
Článok pre vás napísal MQ .
Avatar
Užívateľské hodnotenie:
2 hlasov
Používám hlavně Python a zajímám se o Deep Learning a vše kolem.
Aktivity