SAMSUNG_032023 Advertisement SAMSUNG_032023 Advertisement SAMSUNG_032023 Advertisement

Python: Django II / 21. časť

0

V tejto časti seriálu uvedieme viacero veľmi dôležitých detailov, ktoré musíme poznať predtým, ako sa naplno pustíme do tvorby projektov Django. Ukážeme si, ako sprístupníme správcovskú webovú stránku, a v závere sa začneme venovať tzv. zobrazeniam (Views).

path()

Zopakujme si, že funkcia path() slúži na priradenie funkcií View k URL vzorom. Má dva povinné argumenty: route a view, ako aj dva nepovinné argumenty: kwargs a name.

Route je reťazec, ktorý obsahuje URL vzor. Django hľadá URL vzor v rámci urlpatterns, pričom neberie do úvahy názov domény ani parametre GET/POST. Ak nájde URL vzor, volá príslušnú funkciu View, ktorej prvý argument je objekt HttpRequest a druhý argument je údaj, ktorý je súčasťou path() nájdeného URL vzoru.

settings.py

Ide o štandardný modul Pythonu, ktorý obsahuje nastavenia pre framework Django. Už vieme, že v rámci časti DATABASES možno upraviť nastavenia týkajúce sa používaného databázového prostredia. Základné prostredie, ktoré používa framework Django, je SQLite. SQLite môžeme používať okamžite bez akýchkoľvek dodatočných inštalácií či konfigurácií. Databáza je fyzicky umiestnená v základnej zložke nášho projektu v súbore db.sqlite3. V prípade, ak sa rozhodneme používať iné databázové prostredie, musíme patrične upraviť časť DATABASES modulu settings.py.

Časť INSTALLED_APPS definuje použité aplikácie:

admin

Správcovské rozhranie

auth

Autentifikácia

contenttypes

Identifikátory obsahu

sessions

Sedenia

messages

Správy

staticfiles

Statické súbory

Túto konkrétnu časť spomíname zámerne, a to preto, že uvedené aplikácie rovnako ako naše vlastné aplikácie používajú databázové tabuľky. Prv ako dané aplikácie použijeme, musíme tabuľky vytvoriť.

models.py

Modely, resp. zdroje našich údajov sú fyzicky reprezentované databázovými tabuľkami. Špecifikáciu modelov uvádzame v module models.py. Odvolávame sa pritom na rodičovskú triedu django.db.models.Model. Premenné triedy Model sú databázové položky. Názvy premenných zväčša reprezentujú názvy stĺpcov tabuliek. Databázové položky sú triedy Field, ktorá definuje typ vkladaných údajov.

migrate

Príkaz python3 manage.py migrate sa používa na vytvorenie, resp. vykonanie zmien v databázových tabuľkách. Kontroluje pritom zoznam INSTALLED_APPS a aplikuje nastavenia uvedené v časti DATABASES. Aktuálny stav aplikácie zmien = migrácií sa ukladá do samostatnej tabuľky s názvom django_migrations. V prípade, ak sa rozhodneme nepoužívať aplikácie ponúknuté frameworkom Django, jednoducho ich odstránime zo zoznamu INSTALLED_APPS. V takom prípade pre ne Django, samozrejme, nevytvorí, resp. nezmení príslušné tabuľky. Naopak, len čo vytvoríme novú aplikáciu, ktorú chceme používať v rámci nášho projektu, musíme ju ručne zahrnúť do zoznamu INSTALLED_APPS. Tento prístup je trošku zavádzajúci, ale umožňuje nám kedykoľvek „pripájať“ a „odpájať“ jednotlivé aplikácie podľa našej potreby.

makemigrations

Príkazom python3 manage.py makemigrations názov_aplikácie upozorníme Django, že sme vykonali zmeny v definícii modelov a treba uskutočniť migráciu. Zmeny sú reprezentované výrazmi, ktoré sú uložené v bežný súboroch v zložke názov_aplikácie/migrations. Tieto výrazy môžeme zobraziť vo forme výrazov SQL, a to pomocou príkazu python3 manage.py sqlmigrate názov_aplikácie číslo_súboru_s_migráciou. Postup, ako Django vytvára výrazy SQL, je vopred stanovený a možno ho naštudovať v dokumentácii. Dôležitý je fakt, že pri zmenách v definícii tabuliek nedochádza k strate uložených údajov.

Admin webová stránka

Obrovská výhoda frameworku Django je automatická tvorba rozhrania určeného na správu našich modelov, resp. databázových tabuliek. Pomocou správcovského rozhrania môžeme ihneď po vytvorení aplikácie a príslušných tabuliek vkladať, meniť, resp. odstraňovať ich obsah. Správcovské rozhranie sprístupníme takto:

1. vytvoríme účet správcu: python3 manage.py createsuperuser, zadáme meno, e-mailovú adresu a heslo,

2. modely, ktoré chceme spravovať v rozhraní, zaregistrujeme v súbore: názov_aplikácie/admin.py pomocou príkazu: admin.site.register(názov_modelu),

3. spustíme server: python3 manage.py runserver,

4. v prehliadači zadáme URL adresu: http://127.0.0.1:8000/admin/.

 

Obr. 1 Django Admin web stránka

 

Správcovské rozhranie automaticky vytvára a ponúka formuláre potrebné na vykonávanie aktivít s našimi tabuľkami. Typy údajov, ktoré môžeme zadávať do formulárov, korešpondujú s databázovými položkami triedy Field. V prípade položky DateTimeField sa navyše vytvára JavaScript, pomocou ktorého možno vyberať dátum z kalendára, resp. vkladať aktuálny čas.

 

Views

Views sú webové stránky, ktoré slúžia na interakciu medzi používateľom a údajmi. Každý View je reprezentovaný funkciou Python, resp. metódou (v prípade triedy). Views sú vyberané pomocou tzv. URLconfs. URLconfs sa používajú na priradenie View ku konkrétnemu URL vzoru.

Postup zobrazenia konkrétneho View je nasledujúci:

1. Django nahrá modul názov_lokality.urls (v súlade s konfiguráciou ROOT_URLCONF).

2. V súbore nájde premennú urlpatterns a prehľadáva vzor za vzorom.

3. Po nájdení vzoru, ktorý sa zhoduje so zadanou cestou (URL match), volá príslušnú funkciu View, ktorej odovzdá údaje uvedené v URL. Tieto tzv. keywords argumenty sú v rámci reťazca path definované pomocou dvojice konvertor:názov_vzoru. Konvertor (converter) určuje typ, s ktorým sa má zhodovať časť reťazca path. Názov vzoru (pattern name) definuje meno, ktoré bude použité na identifikáciu časti reťazca.

4. Každá funkcia View buď vracia HttpResponse objekt, teda zobrazí obsah webovej stránky, alebo vyvolá výnimku Http404 (Page Not Found).

 

View čítajú údaje z databázových tabuliek, s ktorými dokážu vykonávať rôzne akcie od zobrazenia na stránke až po generovanie súborov PDF/XML/ZIP. Dôležitá informácia je tá, že grafický dizajn webových stránok je striktne oddelený a je spravovaný systémom šablón (DjangoTemplates).

 

Marek Sopko

Zobrazit Galériu

Marek Sopko

Všetky autorove články

Pridať komentár

Mohlo by vás zaujímať

Mohlo by vás zaujímať