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.
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:
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ú.
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:
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 podmienkamiStiahnuté 1189x (9.37 kB)