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