Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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:

Spuštěný Django server. - Django - Tvorba webů v Pythonu

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:

localhost:8000
localhost:8000

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ínkami

Staženo 954x (9.37 kB)

 

Předchozí článek
Úvod do Django frameworku a webových aplikací v Pythonu
Všechny články v sekci
Django - Tvorba webů v Pythonu
Přeskočit článek
(nedoporučujeme)
Představení MVC a MVT architektury v Django
Článek pro vás napsal MQ .
Avatar
Uživatelské hodnocení:
146 hlasů
Používám hlavně Python a zajímám se o Deep Learning a vše kolem.
Aktivity