2. diel - Zoznámenie s frameworkom Django pre Python
V predchádzajúcej 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.
Otvoríme si v počítači príkazový riadok (anglicky Command
Prompt). Vo Windows stačí vyhľadať cmd, na MacOS a Linuxe sa
príkazový riadok volá terminal:

Do príkazového riadka napíšeme tento príkaz:
py -m pip install Django==4.2.1
Ak nám príkazový riadok vypíše, že príkaz
py neexistuje, nemáme správne nainštalovaný Python. Pokyny na
inštaláciu nájdeme v lekcii PyCharm a
prvá konzolová aplikácia v Pythone
V príkazovom riadku uvidíme výstup:
Výstup inštalácie: 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 všetkých verzovaných prvkov! V Djangu budeme neskôr
vytvárať pokročilý projekt, ktorý závisí od množstva knižníc, databáz
atď. Použitie najnovšej verzie nejakej knižnice, ktorá práve včera
vyšla, naozaj nie je dobrý nápad. Projekt potom bez odbornej úpravy
pravdepodobne nebude fungovať! Ako 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 a modulov teda neplatí, ako napríklad
pri aktualizácii Windows, že chceme každý deň používať tú najnovšiu.
Neustále aktualizácie by si totiž vyžadovali každodenné a komplexné zmeny
v kóde projektu a reálne sa preto nerobia. Z rovnakého dôvodu aj my
aktualizujeme kurzy v pravidelných intervaloch a nové verzie navzájom
zladíme tak, aby všetko fungovalo.
Vytvorenie projektu
Vytvoríme si prvý projekt s názvom mysite. Opäť na to
použijeme príkazový riadok. Zložku, v ktorej chceme projekt vytvoriť si
zobrazíme v prieskumníkovi súborov. Namiesto cesty do vstupu
napíšeme cmd a potvrdíme klávesom ENTER:

Otvorí sa nám príkazový riadok v nami zvolenej zložke:

Na MacOS si otvoríme terminál, napíšeme
príkaz cd a presunieme zložku, v ktorej chceme mať projekt
uložený na okno terminálu. V príkazovom riadku budeme mať napríklad
príkaz: cd Users/user_name/Documents/Django s medzerou za
cd. Potvrdíme klávesom ENTER.
Do terminálu následne napíšeme tento príkaz pre vytvorenie Django projektu:
django-admin startproject mysite
Po zadaní príkazu django-admin startproject mysite sa vám
môže zobraziť chybové hlásenie:
Windows PowerShell C:\Users\tomse>django-admin startproject mysite 'django-admin' is not recognized as an internal or external command, operable program or batch file.
Alternatívnym riešením je spustiť príkaz:
py -m django startproject mysite
Po vložení príkazu sa nič nevypíše. Django za nás vytvorí štruktúru
projektu. Projekty v Djangu totiž majú určité pravidlá, ktorými by sme sa
mali riadiť. To oceníme najmä pri väčších projektoch, aj keď pri
menších nám to môže zo začiatku spôsobovať trochu zmätok. V našej
zložke sa vytvoril adresár mysite/. Otvorme si ho v
PyCharme:

Skontrolujme si, že otvárame zložku mysite/,
ktorá obsahuje ďalšiu zložku mysite/ a súbor
manage.py a nie iný adresár.
Adresárová štruktúra Django projektu
Obsah zložky vyzerá takto:
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á určuje, ako sa má spracovať URL adresa, ktorú používateľ zadá do prehliadača. Definujeme tu, aké adresy smerujú na aké časti našej aplikácie. Tento mechanizmus sa nazýva routovanie,wsgi.py- konfigurácia rozhrania pre nasadenie webovej aplikácie na server,manage.py- o zložku vyššie sa nachádzamanage.py, pre nás najdôležitejší súbor. Umožňuje nám spúšťať rôzne príkazy. Použijeme ho napr. na spustenie servera, 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 príkazom cez súbor manage.py.
Najprv musíme otvoriť príkazový riadok v zložke mysite/. Ak
sme si zložku otvorili v PyCharme, môžeme to urobiť kliknutím na
ikonu terminálu alebo klávesovou skratkou
Alt+F12:

Zadáme príkaz:
py manage.py runserver
Po chvíli sa do konzoly vypíše:
Terminál
PS C:\Users\Filip\Desktop\Django\mysite> py manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
May 08, 2025 - 18:52:12
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.
Ak sa nám príkaz nevykonal, uistíme sa, že máme
otvorenú správnu zložku, zložky mysite/ sú v našom projekte
dve.
Naša aplikácia teraz beží na našom lokálnom serveri na adrese
http://127.0.0.1:8000/. Zadáme túto adresu do svojho webového
prehliadača alebo klikneme na odkaz v konzole. Uvidíme uvítaciu stránku
frameworku Django:

V príkazovom riadku sa budú vypisovať všetky požiadavky na server.
Ak chceme server ukončiť, stlačíme v termináli 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ácia a modul než projekt a aplikácia, význam je však úplne rovnaký.
Pre túto chvíľu teda ukončíme beh servera – vrátime sa do okna
terminálu a stlačíme Ctrl + C) Potom si vytvoríme v
projekte aplikáciu (modul) s názvom hello_world. Urobíme tak
príkazom v termináli (opäť v zložke mysite/):
py manage.py startapp hello_world
V zložke mysite/ sa nám vytvorí zložka
hello_world/:

Adresárová štruktúra Django aplikácie
Django za nás vytvorí všetko potrebné, to je jeho výhoda oproti napr.
frameworku Flask. V zložke projektu sa vytvorí nový adresár
hello_world/. Jeho obsah vyzerá takto:
mysite/
hello_world/
__init__.py
admin.py
apps.py
models.py
tests.py
# urls.py
# Everything else remains the same
Jednotlivé súbory si opäť popíšeme:
admin.py– administrácia jednotlivých aplikácií,apps.py– konfigurácia konkrétnej aplikácie,models.py– správa databázových modelov, Django ORM, viď ďalej v kurze,tests.py– testy aplikácie,urls.py– tento súbor sa nevytvorí, musíme ho vytvoriť manuálne (viď ďalej). Budú tu odkazy na Python skripty, ktoré spracujú požiadavky zaslané cez dané URL adresy.
Štruktúra adresárov môže na prvý pohľad pôsobiť chaoticky, 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, do ktorého sa teraz
presunieme, aplikáciu "nainštalujeme". Django musí vedieť,
kde sú aplikácie a koľko ich je. Pri tejto aplikácii inštalácia nie je
nevyhnutná, ale je lepšie zvyknúť si inštalovať všetky vlastné
aplikácie, aby sme dodržali princípy frameworku Django. Inštaláciu
vykonáme pridaním názvu aplikácie do settings.py, do časti
označenej komentárom # Application definition. Výsledný zoznam
INSTALLED_APPS v súbore mysite\mysite\settings.py
bude vyzerať takto:
INSTALLED_APPS = [
'hello_world',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
Prvá Django aplikácia
V ďalších krokoch si vytvoríme Django aplikáciu, ktorá po spustení
vypíše na webovej stránke text Hello world!. Poďme na to.
View
Každá stránka, ktorú v Djangu vytvoríme, musí mať tzv. view, čiže
zobrazenie. Je to obyčajná Python funkcia, ktorá dostane požiadavku z
webového prehliadača a vráti nejakú odpoveď. Napríklad text alebo celú
HTML stránku. Otvorme si súbor views.py, ktorý nájdeme v
zložke hello_world/, a do neho napíšeme tento kód:
from django.http import HttpResponse def index(request): return HttpResponse("Hello world!")
Metóda index() vracia objekt typu HttpResponse,
ktorý nám umožňuje poslať odpoveď späť do prehliadača. Ako parameter mu
odovzdávame text, ktorý sa má na stránke zobraziť. V ďalších krokoch
nastavíme, aby sa táto funkcie zavolala vždy, keď niekto pristúpi na
stránku http://127.0.0.1:8000/.
Routovanie
V nasledujúcom kroku musíme zabezpečiť, aby otvorenie stránky
http://127.0.0.1:8000/ zavolalo práve vytvorenú funkciu
index() a zobrazilo požadovaný text. Tento proces sa nazýva
routovanie. Vytvorme si v zložke hello_world/
nový súbor urls.py.
V našom projekte sa už súbor urls.py
nachádza, ale v zložke mysite/, ktorá slúži pre celý
projekt. My budeme teraz používať ten v zložke
hello_world/, ktorý sme práve vytvorili. Nepomýľme si ich.
Do novo vytvoreného súboru urls.py vložíme tento kód:
from django.urls import path from . import views urlpatterns = [ path("", views.index, name="index"), ]
V kolekcii urlpatterns sa nachádzajú všetky URL adresy (tzv.
routy), ktoré chceme v našej aplikácii použiť. Na ich
vytvorenie využijeme funkciu path(), ktorá ako prvý parameter
berie URL adresu, kde sa nachádza. Keby sme teda zadali ako parameter napr.
"hello", budeme odkazovať na adresu http://127.0.0.1:8000/hello).
Pretože funkciu index() chceme volať na adrese
http://127.0.0.1:8000/, necháme v hodnote tohto atribútu
prázdny string.
Druhý parameter určuje, čo sa má na tejto ceste spustiť. V našom
prípade je to funkcie index() v súbore views.py.
Tretí parameter name je voliteľný, využijeme ho v prípade,
keď budeme chcieť na danú adresu v kóde neskôr odkazovať.
Routovanie v projekte
Teraz sa presunieme do druhého súboru
urls.py, ktorý sa nachádza v zložke mysite/. Tu
predchádzajúci súbor urls.py zaregistrujeme. Súbor
mysite/urls.py rozšírime takto:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path("admin/", admin.site.urls), path("", include("hello_world.urls")), ]
Pridali sme len jednu novú path() a import na funkciu
include(). Tým sme projektu povedali, že ak používateľ
pristúpi na cestu "", teda http://127.0.0.1:8000/,
má sa použiť urls.py súbor nachádzajúci sa v zložke
hello_world/.
Spustenie aplikácie
Do terminálu napíšeme príkaz na spustenie servera:
py manage.py runserver
Na URL adrese http://127.0.0.1:8000/ teraz uvidíme stránku s
nápisom Hello World!:
V nasledujúcej 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.
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 74x (7.94 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Python
