IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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ále sa už budeme venovať frameworku Django. Ten si predstavíme, povieme si na čo sa používa, a vytvoríme svoju prvú webovú aplikáciu v Pythone.

Úvod

Django je pomerne komplexný webový framework, ktorý ponúka všetko, čo budú vaši používatelia potrebovať. Django za nás prevezme správu databázy, poskytne veľa užitočných funkcií a ponúkne svoju perfektnú administráciu.

Okrem Django frameworku sa v Pythone občas využíva tiež menšie framework Flask, s ktorým máte viac slobody, ale nemá tak rozsiahle možnosti a preto sa odporúča na vývoj menších projektov. Každému však vyhovuje niečo iné a preto ja napr. Používam Django aj na menšie aplikácie.

Inštalácia

Počítam s tým, že Python máte nainštalovaný. Django 2.0 nainštalujeme nasledujúcim príkazom, ktorý vložíme do príkazového riadku. Ak nie ste s príkazovým riadkom zoznámenie, otvorte ponuku Štart a napíšte "cmd". Na nájdenú aplikáciu "Príkazový riadok" vpravo kliknite myšou. Ak nepoužívate Windows, predpokladám, že viete kde má váš systém terminál :) Zadajte príkaz:

py -m pip install Django==2.0.4

Ak používate Anaconda / MiniConda distribúciu Pythone, upravte si príkazy pre inštalácie ako:

conda install django

Verziu 2.0.4 prípadne upravte na aktuálne číslo verzie, ktoré nájdete na https://www.djangoproject.com/

V príkazovom riadku by ste mali vidieť výstup podobný tomuto:

C:\Users\David>py -m pip install Django==2.0.4
Collecting Django==2.0.4
  Downloading https://files.pythonhosted.org/packages/89/f9/94c20658f0cdecc2b660
7811e2c0bb042408a51f589e5ad0cb0eac3236a1/Django-2.0.4-py3-none-any.whl (7.1MB)
    100% |████████████████████████████████| 7.1MB 167kB/s
Requirement already satisfied: pytz in c:\users\david\appdata\local\programs\pyt
hon\python36-32\lib\site-packages (from Django==2.0.4)
Installing collected packages: Django
Successfully installed Django-2.0.4

C:\Users\David\AppData\Local\Programs\Python>

Vytvorenie projektu

Vytvoríme si prvý projekt s názvom "myšou". Opäť k tomu použijeme príkazový riadok, tentoraz s nasledujúcim príkazom:

py -m django startproject mysite

Po vložení príkazu sa nič nevypíše. Django za nás vytvoril štruktúru projektu. Projekty v Django totiž majú nejaké pravidlá, ktorými by sme sa mali riadiť. To si budeme pochvaľovať najmä pri väčších projektoch, aj keď u tých menších nám to zo začiatku môže pôsobiť trochu zmätok.

V našej zložke s Python, zvyčajne C:\Users\<VašeJméno>\AppData\Local\Programs\Python\mysite, sa nám vytvoril nový adresár. Otvorte si ho.

Pozor, zložka AppData je skrytá a preto buď zadajte do prieskumníku celú cestu alebo si zapnite zobrazenie skrytých zložiek. To vo Windows 10 urobíte otvorením prieskumníka, prepnutím karty "Zobrazenie" hore a zaškrtnutím "Skryté položky."

Zobrazenie skrytých súborov a priečinkov vo Windows 10 - Tvorba webov v Django frameworku pre Python

Postup pre iné verzie Windows si prípadne jednoducho dohľadáte.

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ú uží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 webové aplikácie na server.
  • manage.py - O zložku vyššie sa nachádza manage.py, pre nás najdôležitejšia súbor. Umožňuje nám spúšťať rôzne príkazy. Použijeme ho napr. K migrácii databázy, vytváranie aplikácií, zberu statických súborov a ďalším podobným účely.

Spustenie servera

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

Spustenie servera prevedieme spustením príkazu cez súbor manage.py. K tomu potrebujeme otvoriť príkazový riadok v priečinku mysite, kde sa tento súbor nachádza. Zložku máme ešte otvorenú v prieskumníkovi, vrátime sa o 1 zložku späť pomocou Alt + ↑. Teraz stlačíme Shift, klikneme na priečinok mysite pravým tlačidlom a vyberieme "Otvoriť tu okno príkazového riadku" (prípadne okno PowerShell). Moja e v riadku teraz je: C:\Users\David\AppData\Local\Programs\Python\mysite>

Zadáme príkaz:

py manage.py runserver

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

C:\Users\David\AppData\Local\Programs\Python\mysite>py manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).

April 26, 2018 - 11:33:38
Django version 2.0.4, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

Ak sa vám príkaz nevykonal, uistite sa, že ste v správnej zložke, zložky mysite sú v našom projekte 2.

Naša aplikácia teraz bežia na našom lokálnom serveri, na adrese http://localhost:8000/. Zadajte túto adresu do svojho webového prehliadača. Uvidíte uvítaciu stránku Django frameworku:

Uvítacia obrazovka django na lokálnom serveri - Tvorba webov v Django frameworku pre Python

V príkazovom riadku sa budú vypisovať všetky požiadavky na server. Ak budete chcieť server ukončiť, stlačíte Ctrl + C.

Vytvorenie aplikácie

Projekt i prostredie máme pripravené. Môžeme teda začať s tvorbou našej aplikácie. Django má v tomto smere trochu netradičné názvoslovie. Projekt tu môže obsahovať viac aplikácií. Tie fungujú ako moduly, typicky máme napr. Zvlášť administráciu od hlavnej aplikácie. Asi ste sa asi skôr stretli s pojmami aplikácie a modul než s projekt a aplikácie, význam je ale úplne rovnaký.

Vytvoríme si teda v projekte aplikácii (modul) s názvom "ahoj_svete" príkazom:

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 danej URL adresy spracujú

Ak vidíte štruktúru adresárov prvýkrát, budete v nej mať pravdepodobne zmätok, ale po chvíli používania zistíte, že dáva zmysel. Až budete Django používať pri tvorbe väčšej aplikácie, túto štruktúru si zamilujete.

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á. U tejto aplikácie inštalácia nie je nutná, ale je lepšie si zvyknúť inštalovať všetky naše aplikácie, už len z princípu 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. U mňa 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 zabezpečiť, aby otvorenie URL adresy servera otvorilo aplikáciu "ahoj_svete". Keďže postup je zložitejší, vysvetlíme si hneď na začiatku čoho potrebujeme docieliť. Adresu servera (http://localhost:8000/) postupne 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úce:

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

Routovanie projektu

V súbore mysite/mysite/urls.py pridáme route na našej aplikácii. Keďže táto ruta bude definovaná v routách aplikácie, teda v súbore mysite/ahoj_svete/urls.py, tento súbor sem iba naincludujeme, aby sme ju nemuseli písať 2x. Všetky ruty 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 pridajte route na ahoj_svete.urls. Nezabudnite 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 ruty budeme už definovať len v priečinku aplikácie. Prejdite do priečinka mysite/ahoj_svete/ a tu vytvorte súbor urls.py. Tam pridáme URL adresu našej prvej stránky. Tu už adresu prekryjeme cez tzv. View. To je Python metóda, ktorá požiadavku spracuje a vráti užívateľovi výsledok. Ak poznáte MVC architektúru, aj tu Python používa iné názvoslovie :) Ak nie, vysvetlíme si ju hneď v nasledujúcej lekcii. Obsah súboru tu urls.py bude nasledujúce:

from django.urls import path
from . import views

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

Docielili sme toho, že otvorenie adresy servera cez ruty projektu zavolá ruty aplikácie "ahoj_svete" a cez ne otvorí view s názvom index.

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 neho. Jedná sa o Python metódu. Rôzne URL adresy napojujeme na rôzne views, teda rôzne metódy. My máme v aplikácii teraz len jednu, aby toho nebolo na začiatok moc.

Vytvoríme si teda view pre zobrazenie hlášky "Ahojte všetci!" Prejdeme do súboru mysite/ahoj_svete/views.py, kde si vytvoríme metódu index(). Jej parametrom bude request, požiadavka, ktorý prišiel cez URL adresu. Naši hlášku nezobrazíte ako HTML stránku, ale len ako text vrátením inštancia typu HttpResponse. Kód danej metódy je nasledovné, nezabudnite si pridať aj HttpResponse na prvom riadku.

from django.shortcuts import render, HttpResponse

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

Všetko si uložte a otvorte adresu aplikácie v prehliadači, pripomeniem, že je to http://localhost:8000/. Samozrejme musíte mať spustený aj server, viď vyššie. A takto vyzerá naša prvá stránka vytvorená za 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 verím, že sa vám všetkým podarilo požiadavku naroutovat až do view index() a hlášku zobraziť. Ak nie, stiahnite si v prílohe vzorový zdrojový kód a nájdite si chybu.

V budúcej lekcii, Predstavenie MVC a MVT architektúry v Django , si vysvetlíme ako funguje MVC architektúra, teda presnejšie jej MVT verzie, ktorú Python používa.


 

Stiahnuť

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

Stiahnuté 968x (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