NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!

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ší. Otevřeme si v počítači příkazový řádek (anglicky Command Prompt). Ve Windows stačí vyhledat cmd, na MacOS a Linux se příkazový řádek jmenuje terminal:

CMD ve Windows - Základy Django frameworku pro Python

Do příkazového řádku napíšeme tento příkaz:

py -m pip install Django==4.2.1

Pokud nám příkazový řádek hlásí, že příkaz py neexistuje, nemáme správně nainstalovaný Python. Pokyny k instalaci nalezneme v lekci PyCharm a první konzolová aplikace v Pythonu.

V příkazovém řádku uvidíme 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. Složku, ve které chceme projekt vytvořit si zobrazíme v průzkumníku souborů. Místo cesty do vstupu napíšeme cmd a potvrdíme klávesou ENTER:

Jak otevřít cmd ve složce - Základy Django frameworku pro Python

Otevře se nám příkazový řádek v námi zvolené složce:

Django – Terminál - Základy Django frameworku pro Python

Na MacOS si otevřeme terminál, napíšeme příkaz cd a přesuneme složku, ve které chceme mít projekt uložený na okno terminálu. V příkazovém řádku budeme mít například příkaz: cd /Users/vase_jmeno/Documents/Django s mezerou za cd. Potvrdíme klávesou ENTER.

Do terminálu následně napíšeme tento příkaz pro založení Django projektu:

django-admin startproject mysite

Po vložení příkazu se nic nevypíše. Django za nás vytvoří 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 se nám vytvořil adresář mysite/. Otevřme si ho v PyCharmu:

Otevření složky - Základy Django frameworku pro Python

Zkontrolujme si, že otvíráme složku mysite/, která obsahuje další složku mysite/ a soubor manage.py a ne jiný adresář.

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 nachá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ř. ke spuštění serveru, 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. Nejprve musíme otevřít příkazový řádek ve složce mysite/. Pokud jsme si složku otevřeli v PyCharmu, můžeme to udělat kliknutím na ikonu terminálu či klávesovou zkratkou Alt+F12:

PyCharm Terminál - Základy Django frameworku pro Python

Zadáme příkaz:

py manage.py runserver

Po chvíli se do konzole vypíše:

Terminal
PS C:\Users\Filip\Desktop\Django\mysite> python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
May 08, 2025 - 18:52:12
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 máme otevřenou správnou složku, složky mysite/ jsou v našem projektu dvě.

Naše aplikace nyní běží na našem lokálním serveru na adrese http://127.0.0.1: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. - Základy Django frameworku pro Python

V příkazovém řádku se budou vypisovat všechny požadavky na server.

Pokud budeme chtít server ukončit, stiskneme v terminálu 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 – vrátíme se do okna terminálu a stiskneme Ctrl + C). Poté si vytvoříme 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

Ve složce mysite/ se nám vytvoří složka ahoj_svete/:

Vytvoření aplikace - Základy Django frameworku pro Python

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ář ahoj_svete/. 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ě (viz dále). 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, do kterého se nyní přesuneme, 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 INSTALLED_APPS v souboru mysite\mysite\settings.py bude vypadat takto:

INSTALLED_APPS = [
    'ahoj_svete',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

První Django aplikace

V dalších krocích si vytvoříme Django aplikaci, která po spuštění vypíše na webové stránce text Ahoj světe!. Pojďme na to.

View

Každá stránka, kterou v Djangu vytvoříme, musí mít view, neboli zobrazení. Je to obyčejná funkce v Pythonu, která dostane požadavek z webového prohlížeče a vrátí nějakou odpověď. Třeba text nebo webovou stránku. Otevřeme si soubor views.py, který najdeme ve složce ahoj_svete/, do něj napíšeme následující kód:

from django.http import HttpResponse


def index(request):
    return HttpResponse("Ahoj světe!")

Metoda index() vrací objekt typu HttpResponse, který nám umožňuje poslat odpověď zpět do prohlížeče. Jako parametr mu předáváme text, který se má na stránce zobrazit. V dalších krocích nastavíme, aby se tato funkce zavolala pokaždé, když někdo otevře stránku http://127.0.0.1:8000/.

Routování

V následujícím bodu musíme zajistit, aby otevření stránky http://127.0.0.1:8000/ zavolalo právě vytvořenou funkci index() a zobrazilo požadovaný text. Tomuto procesu se říká routování. Vytvořme si ve složce ahoj_svete/ nový soubor urls.py.

V našem projektu se již soubor urls.py nachází, najedeme jej ve složce mysite/, který slouží pro celý projekt. My budeme nyní používat ten ve složce ahoj_svete/, který jsme právě vytvořili. Nepleťme si je.

Do nově vytvořeného souboru urls.py vložíme následující kód:

from django.urls import path
from . import views

urlpatterns = [
    path("", views.index, name="index"),
]

V kolekci urlpatterns se nachází všechny URL adresy (tzv. routy), které chceme v naší aplikaci použít. Pro vytvoření využijeme funkci path(), která jako první parametr bere URL adresu, kde se nachází. Kdybychom tedy zadali jako parametr např. "ahoj", budeme odkazovat na adresu http://127.0.0.1:8000/ahoj. Protože funkci index() chceme volat na adrese http://127.0.0.1:8000/, necháme v hodnotě tohoto atributu prázdný string.

Druhý atribut pak udává, co se má na této cestě spustit. V našem případě to je funkce index() ze souboru views.py. Třetí parametr name je volitelný, využijeme jej v případě, kdy budeme chtít na danou adresu v kódu později odkazovat.

Routování v projektu

Přesuneme se nyní do druhého souboru urls.py, který se nachází ve složce mysite/. Zde předchozí soubor urls.py zaregistrujeme. Soubor mysite/urls.py rozšíříme následovně:

from django.contrib import admin
from django.urls import path, include


urlpatterns = [
    path("admin/", admin.site.urls),
    path("", include("ahoj_svete.urls")),
]

Přidali jsme pouze jednu novou path() a import na funkci include(). Tím jsme projektu řekli, že pokud uživatel přistoupí na cestu "", tedy http://127.0.0.1:8000/, má se použít urls.py soubor nacházející se ve složce ahoj_svete/.

Spuštění aplikace

Do terminálu napíšeme příkaz pro spuštění serveru:

py manage.py runserver

Na URL adrese http://127.0.0.1:8000/ nyní uvidíme stránku s nápisem Ahoj světe!:

127.0.0.1:8000
http://127.0.0­.1:8000/

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 1469x (7.72 kB)

 

Předchozí článek
Úvod do Django frameworku a webových aplikací v Pythonu
Všechny články v sekci
Základy Django frameworku pro Python
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í:
316 hlasů
Používám hlavně Python a zajímám se o Deep Learning a vše kolem.
Aktivity