Lekce 2 - Seznámení s Django frameworkem pro Python
V minulé lekci, Úvod do Django frameworku a webových aplikací v Pythonu, jsme si udělali úvod do webových aplikací.
V dnešním tutoriálu webových aplikací s frameworkem Django se vrhneme na samotný framework Django. Nejprve si jej nainstalujeme a poté vytvoříme svou první webovou aplikaci v Pythonu. Důkladně si vysvětlíme routování.
Instalace Django
Pro instalaci Django 4.2.1 potřebujeme Python ve verzi 3.8 nebo novější. Django nainstalujeme následujícím příkazem, který vložíme do příkazového řádku:
py -m pip install Django==4.2.1
V příkazovém řádku 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žet přesné verze modulů,
komponent a zkrátka všech verzovaných prvků! V Django budeme
později vytvářet docela pokročilý projekt, který závisí na množství
knihoven, databázi atd. Použít nejnovější verzi nějaké komponenty, co
zrovna včera vyšla, opravdu není dobrý nápad. Projekt pak bez odborné
úpravy pravděpodobně nebude fungovat! Za dobrý příklad poslouží knihovna
Pandas
, která ve verzi 2.0 ztratila podporu pro metodu
append()
. Nahradila ji metoda concat()
, samozřejmě s
jinou syntaxí. U verzí knihoven, modul atd. zkrátka neplatí jako např. u
aktualizace Windows, že chceme každý den používat tu nejnovější.
Neustálé aktualizace všeho by totiž vyžadovaly každodenní a komplexní
změny kódu projektu a reálně se tak neprovádějí. Ze stejného důvodu i
my aktualizujeme kurzy v pravidelných intervalech a nové verze k sobě pak
sladíme tak, aby vše fungovalo.
Vytvoření projektu
Vytvoříme si první projekt s názvem mysite
. Opět k tomu
použijeme příkazový řádek, tentokrát jej musíme otevřít v naší
složce s Pythonem, a zadáme následující příkaz:
django-admin startproject mysite
Po vložení příkazu se nic nevypíše. Django za nás vytvořil strukturu
projektu. Projekty v Djangu totiž mají určitá pravidla, kterými bychom se
měli řídit. To si budeme pochvalovat zejména u větších projektů, i když
u těch menších nám to ze začátku může působit trochu zmatek. V naší
složce s Pythonem se nám však vytvořil nový adresář mysite/
.
Otevřeme si jej.
Adresářová struktura Django projektu
Obsah složky vypadá následovně:
mysite\
mysite\
__init__.py
settings.py
urls.py
wsgi.py
manage.py
Jednotlivé soubory si nyní popíšeme:
settings.py
- zde se nalézá konfigurace projektu a zde také instalujeme své aplikace, viz dále,urls.py
- zde je uložené schéma, které říká, jak se má zpracovat URL adresa, kterou uživatel do prohlížeče zadá. Definujeme zde, jaké adresy směřují na jaké části naší aplikace. Tomuto mechanismu se říká routování,wsgi.py
- konfigurace rozhraní pro nasazení webové aplikace na server,manage.py
- o složku výše se nachází manage.py, pro nás nejdůležitější soubor. Umožňuje nám spouštět různé příkazy. Použijeme jej např. k migraci databáze, vytváření aplikací, sběru statických souborů a dalším podobným účelům.
Spuštění serveru
Z úvodní lekce již víme, že pro to, abychom mohli k naší aplikaci přistoupit přes webový prohlížeč, potřebujeme server.
Spuštění serveru provedeme spuštěním příkazu přes soubor
manage.py
. K tomu potřebujeme otevřít příkazový řádek ve
složce mysite\
, kde se tento soubor nachází.
Zadáme příkaz:
py manage.py runserver
Po chvíli se do konzole vypíše:
Konzolová aplikace
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.
Pokud se nám příkaz nevykonal, ujistíme se, že jsme ve
správné složce, složky mysite/
jsou v našem projektu dvě.
Naše aplikace nyní běží na našem lokálním serveru na adrese
http://localhost:8000/
. Zadáme tuto adresu do svého webového
prohlížeče nebo klikneme na odkaz v konzoli. Uvidíme uvítací stránku
Django frameworku:
V příkazovém řádku se budou vypisovat všechny požadavky na server.
Pokud budeme chtít server ukončit, stiskneme Ctrl + C.
Vytvoření aplikace
Projekt i prostředí máme připravené. Můžeme tedy začít s tvorbou naší aplikace. Django má v tomto ohledu poněkud netradiční názvosloví. Projekt zde může obsahovat více aplikací. Ty fungují jako moduly, typicky máme např. administraci oddělenou od hlavní aplikace. Častěji se setkáváme s pojmy aplikace a modul než projekt a aplikace, význam je ale úplně stejný.
Pro tuto chvíli tedy ukončíme běh serveru a vytvoříme si v projektu
aplikaci (modul) s názvem ahoj_svete
. Učiníme tak příkazem v
terminálu (opět ve složce mysite/
):
py manage.py startapp ahoj_svete
Adresářová struktura Django aplikace
Django za nás vše potřebné vytvoří, to je jeho výhoda oproti např. Flask frameworku. Ve složce projektu se nám vytvoří nový adresář. Jeho obsah vypadá následovně:
mysite/ ahoj_svete/ __init__.py admin.py apps.py models.py tests.py # urls.py # Ostatní zůstává stejné
Jednotlivé soubory si opět popíšeme:
admin.py
- administrace jednotlivé aplikace,apps.py
- konfigurace jednotlivé aplikace,models.py
- správa modelů databáze, Django ORM, viz dále v kurzu,tests.py
- testy aplikace,urls.py
- tento soubor se nevytvoří, musíme jej vytvořit manuálně. Budou zde odkazy na Python skripty, které požadavky zaslané přes dané URL adresy zpracují.
Struktura adresářů může na první pohled působit zmatečně, ale po chvíli používání začne dávat smysl. Až budeme Django používat při tvorbě větší aplikace, tuto strukturu velmi oceníme.
Instalace aplikace
V souboru mysite\mysite\settings.py
aplikaci "nainstalujeme".
Django musí mít přehled o tom, kde má své aplikace a kolik jich má. U
této aplikace instalace není nutná, ale je lepší si zvyknout instalovat
všechny naše aplikace, abychom dostáli principům Django frameworku.
Instalaci provedeme připsáním názvu aplikace do settings.py
, do
části označené komentářem # Application definition
.
Výsledný seznam vypadá takto:
INSTALLED_APPS = [ 'ahoj_svete', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]
Routování
Dostáváme se do bodu, kdy musíme zajistit, aby otevření URL adresy
serveru otevřelo aplikaci ahoj_svete
. Jelikož je postup
složitější, vysvětleme si hned na začátku, čeho potřebujeme docílit.
Adresu serveru (http://localhost:8000/
)
napojíme ze souboru urls.py
projektu přes soubor urls.py
aplikace až na naši první Python metodu,
která uživateli pošle onu "Hello world!" hlášku zpět
do prohlížeče. Pojďme na to!
Postup požadavku bude následující:
http://localhost:8000/ -> urls.py (projekt) -> urls.py (aplikace) -> metoda index()
Routování projektu
V souboru mysite\mysite\urls.py
přidáme routu na naší
aplikaci. Jelikož tato routa bude definovaná v routách
aplikace, tedy v souboru
mysite\ahoj_svete\urls.py
, tento soubor sem pouze naincludujeme,
abychom ji nemuseli psát dvakrát. Všechny routy definované v
aplikaci se poté samy přenesou do rout
projektu a budou fungovat.
Jelikož budeme chtít, aby se aplikace ahoj_svete
spustila
přímo po otevření adresy serveru (localhost:8000/
), místo
adresy uvedeme jen prázdný řetězec ""
. Do souboru
urls.py
si přidejme routu na ahoj_svete.urls
.
Nezapomeneme přidat i import pro include()
:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path("admin/", admin.site.urls), path("", include("ahoj_svete.urls")), ]
Routování aplikace
Veškeré routy budeme již definovat jen ve složce
aplikace. Přejděme do složky ahoj_svete/
a zde
vytvořme soubor urls.py
. Tam přidáme URL adresu naší první
stránky. Zde již adresu navedeme na tzv. view. To je Python
metoda, která požadavek zpracuje a vrátí uživateli výsledek. Kdo je
obeznámen s MVC architekturou si nejspíš všimne, že i zde Python používá
jiné názvosloví. Více si k MVC architektuře povíme později. Obsah
zdejšího souboru urls.py
bude následující:
from django.urls import path from . import views urlpatterns = [ path("", views.index, name="index"), ]
Docílili jsme toho, že otevření adresy serveru přes routy
projektu zavolá routy aplikace
ahoj_svete
a přes ně otevře view
s názvem
index()
. Zopakujme si schéma:
http://localhost:8000/ -> urls.py (projekt) -> urls.py (aplikace) -> metoda index()
Přidání view
View
je tedy poslední část řetězce, která požadavek
uživatele zachytí a odpoví na něj. Jedná se o Python
metodu. Různé URL adresy napojujeme na různá views, tedy různé
metody. My máme v aplikaci zatím jen jednu, aby toho nebylo na začátek
moc.
Vytvoříme si tedy view
pro zobrazení hlášky "Ahoj světe!"
Přejdeme do souboru mysite\ahoj_svete\views.py
, kde si vytvoříme
metodu index()
. Jejím parametrem bude request
,
požadavek, který přišel přes URL adresu. Naši hlášku nezobrazíme jako
HTML stránku, ale jako pouhý text vrácením instance typu
HttpResponse()
. Kód dané metody je následující, nezapomeneme
si přidat také HttpResponse
do importů:
from django.shortcuts import render, HttpResponse def index(request): return HttpResponse("Ahoj světe!")
Vše si uložíme. Znovu spustíme v terminálu server a otevřeme adresu
aplikace v prohlížeči, připomeňme, že je to
http://localhost:8000/
. A takto vypadá naše první stránka
vytvořena za pomocí Django frameworku, která zobrazuje naši oblíbenou
hlášku:
Dnešní lekce byla poněkud náročnější, ale tím, že se nám podařilo
požadavek naroutovat až do view index()
a hlášku zobrazit, jsme
dosáhli výrazného pokroku. Zdrojový kód je přiložený na konci lekce.
V další lekci, Představení MVC a MVT architektury v Django, si vysvětlíme, jak funguje MVC architektura, tedy přesněji její MVT verze, kterou Django používá.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkamiStaženo 1184x (9.37 kB)