Letní akce! Lákají tě IT školení C#, Javy a PHP v Brně? Přihlas se a napiš nám do zpráv kód "BRNO 500" pro slevu 500 Kč na libovolný brněnský kurz. Lze kombinovat se slevami uvedenými u školení i použít pro více kurzů. Akce končí 28.7.

Lekce 2 - Seznámení s Django frameworkem pro Python

Python Django Seznámení s Django frameworkem pro Python

ONEbit hosting Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem. Vydávání, hosting a aktualizace umožňují jeho sponzoři.

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 se již budeme věnovat frameworku Django. Ten si představíme, řekneme si k čemu se používá, a vytvoříme svou první webovou aplikaci v Pythonu.

Úvod

Django je poměrně komplexní webový framework, který nabízí vše, co budou vaši uživatelé potřebovat. Django za nás převezme správu databáze, poskytne spoustu užitečných funkcí a nabídne svou perfektní administraci.

Kromě Django frameworku se v Pythonu občas využívá také menší framework Flask, se kterým máte více svobody, ale nemá tak rozsáhlé možnosti a proto se doporučuje na vývoj menších projektů. Každému však vyhovuje něco jiného a proto já např. používám Django i na menší aplikace.

Instalace

Počítám s tím, že Python máte nainstalovaný. Django 2.0 nainstalujeme následujícím příkazem, který vložíme do příkazového řádku. Pokud nejste s příkazovým řádkem seznámení, otevřete nabídku Start a napište "cmd". Na nalezenou aplikaci "Příkazový řádek" vpravo klikněte myší. Pokud nepoužíváte Windows, předpokládám, že víte kde má váš systém terminál :) Zadejme příkaz:

py -m pip install Django==2.0.4

Verzi 2.0.4 případně upravte na aktuální číslo verze, které naleznete na https://www.djangoproject.com/

V příkazovém řádku byste měli vidět 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>

Vytvoření projektu

Vytvoříme si první projekt s názvem "mysite". Opět k tomu použijeme příkazový řádek, tentokrát s následujícím příkazem:

py -m django startproject mysite

Po vložení příkazu se nic nevypíše. Django za nás vytvořil strukturu projektu. Projekty v Djangu totiž mají nějaká 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, obvykle C:\Users\<VašeJméno>\AppData\Local\Programs\Python\mysite, se nám vytvořil nový adresář. Otevřete si jej.

Pozor, složka AppData je skrytá a proto buď zadejte do průzkumníku celou cestu nebo si zapněte zobrazování skrytých složek. To ve Windows 10 uděláte otevřením průzkumníka, přepnutím karty "Zobrazení" nahoře a zaškrtnutím "Skryté položky."

Zobrazení skrytých souborů a složek ve Windows 10

Postup pro jiné verze Windows si případně jednoduše dohledáte.

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 minulé lekce již víme, že abychom mohli k naší aplikaci vůbec 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í. Složku máme ještě otevřenou v průzkumníku, vrátíme se o 1 složku zpět pomocí Alt + . Nyní stiskneme Shift, klikneme na složku mysite pravým tlačítkem a vybereme "Otevřít zde okno příkazového řádku" (případně okno PowerShell). Má adresa v řádku nyní je: C:\Users\David\AppData\Local\Programs\Python\mysite>

Zadáme příkaz:

py manage.py runserver

Po chvíli se do konzole 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.

Pokud se vám příkaz nevykonal, ujistěte se, že jste ve správné složce, složky mysite jsou v našem projektu 2.

Naše aplikace nyní běží na našem lokálním serveru, na adrese http://localhost:8000/. Zadejte tuto adresu do svého webového prohlížeče. Uvidíte uvítací stránku Django frameworku:

Uvítací obrazovka django na lokálním serveru

V příkazovém řádku se budou vypisovat všechny požadavky na server. Pokud budete chtít server ukončit, stisknete 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ř. zvlášť administraci od hlavní aplikace. Asi jste se asi spíše setkali s pojmy aplikace a modul než s projekt a aplikace, význam je ale úplně stejný.

Vytvoříme si tedy v projektu aplikaci (modul) s názvem "ahoj_svete" příkazem:

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í

Pokud vidíte strukturu adresářů poprvé, budete v ní mít nejspíše zmatek, ale po chvíli používání zjistíte, že dává smysl. Až budete Django používat při tvorbě větší aplikace, tuto strukturu si zamilujete.

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, již jen z principu Django frameworku. Instalaci provedeme připsáním názvu aplikace do settings.py, do části označené komentářem # Application definition. U mě 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ž postup je složitější, vysvětleme si hned na začátku čeho potřebujeme docílit. Adresu serveru (http://localhost:8000/) postupně 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 2x. 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řidejte routu na ahoj_svete.urls. Nezapomeňte 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ěte do složky mysite/ahoj_svete/ a zde vytvořte 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. Pokud znáte MVC architekturu, i zde Python používá jiné názvosloví :) Pokud ne, vysvětlíme si ji hned v příští lekci. Obsah souboru zde 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.

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 nyní 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 jen jako text vrácením instance typu HttpResponse. Kód dané metody je následující, nezapomeňte si přidat i HttpResponse na prvním řádku.

from django.shortcuts import render, HttpResponse

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

Vše si uložte a otevřete adresu aplikace v prohlížeči, připomenu, že je to http://localhost:8000/. Samozřejmě musíte mít spuštěný i server, viz výše. 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 věřím, že se vám všem podařilo požadavek naroutovat až do view index() a hlášku zobrazit. Pokud ne, stáhněte si v příloze vzorový zdrojový kód a najděte si chybu.

V příští 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 Python používá.


 

Stáhnout

Staženo 64x (9.99 kB)

 

 

Článek pro vás napsal MQ .
Avatar
Jak se ti líbí článek?
3 hlasů
Autor se věnuje Pythonu, tvorbě cross-platform aplikací a příležitostně webům, zajímá se o machine learning a celkově práci s daty.
Aktivity (2)

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!