Programování

Výukový program Django: Začínáme s Django 2.0

Django je univerzální webový rámec pro Python, který byl inspirován Ruby on Rails a používá mnoho stejných metafor, aby byl vývoj webu rychlý a snadný. Plně nabitý a flexibilní se Django stal jedním z nejpoužívanějších webových frameworků Pythonu.

Django obsahuje prakticky vše, co potřebujete k vytvoření webové aplikace jakékoli velikosti, a díky své popularitě snadno najde příklady a nápovědu pro různé scénáře. Plus Django poskytuje nástroje, které umožňují vaší aplikaci elegantně se vyvíjet a přidávat funkce a migrovat její datové schéma (pokud má).

Django má také pověst komplexního, s mnoha komponenty a vyžadovanou velkou konfigurací „pod kapotou“. Ve skutečnosti můžete spustit jednoduchou aplikaci v relativně krátkém pořadí a poté ji podle potřeby rozšířit.

V této příručce projdeme vytvořením základní aplikace Django 2.0 a stručně se dotkneme nejdůležitějších funkcí, které poskytuje webovým vývojářům.

Upgradování z Django 1.x

Pokud máte zkušenosti s dřívější verzí 1.x Django, jedná se o nejdůležitější změny, kterých si musíte být vědomi:

  • Django 2.0 pouze podporuje Python 3.4 a vyšší. Python 2.x nebude v budoucích verzích Djanga podporován.
  • Django 2 se řídí vzorem Pythonu 3, kdykoli je to možné, používá nativní řetězce Unicode. Některé funkce Django již nebudou přijímat bytestrings jako vstup.

Existuje mnoho dalších zpětně nekompatibilních změn, ale ty jsou dvě z nejvýznamnějších, zejména při zahájení nových projektů.

Instalace základních knihoven Django

K instalaci Django 2.0 budete potřebovat Python 3.4 nebo lepší. Nejjednodušší způsob instalace Djanga je pak prostřednictvím Pythonu pip nástroj:

pip nainstalujte django

Tím se nainstalují základní knihovny Django a django-admin obslužný program příkazového řádku používaný ke správě projektů Django.

Pokud chcete pracovat s více verzemi Django vedle sebe, vytvořte virtuální prostředí, nainstalujte tam požadovanou verzi Django a použijte ji pro daný projekt Django.

Všimněte si, že k vytvoření více nemusíte používat virtuální prostředí projekty s jedinou instancí Djanga. Potřebujete je pouze k použití různých bodových revizí Djanga rámec s různými projekty.

Vytváření nového projektu Django

Instance Django jsou organizovány ve dvou úrovních: projekty a aplikace.

  • A projekt je instance Django s vlastní konfigurací databáze, nastavením a aplikacemi. Nejlepší je projekt považovat za místo pro uložení všech konfigurací na úrovni webu, které budete používat.
  • An aplikace je členění projektu s vlastní trasou a logikou vykreslování. Do jednoho projektu Django lze umístit více aplikací.

Chcete-li vytvořit nový projekt Django od začátku, zadejte adresář, kam chcete projekt uložit, a zadejte:

django-admin startproject

kde je název projektu i podadresáře, kde bude projekt uložen. Ujistěte se, že jste vybrali jméno, u kterého není pravděpodobné, že by kolidovalo s názvem, který interně používá Python nebo Django. Jméno jako myproj bude fungovat dobře.

Výsledný adresář by měl obsahovat amanage.py soubor, který se používá k ovládání chování aplikace z příkazového řádku, a další podadresář (také s názvem projektu), který obsahuje následující soubory:

  • An __init__.py soubor, který Python používá k označení podadresáře jako modulu kódu.
  • settings.py, který obsahuje nastavení použitá pro projekt. Mnoho z nejběžnějších nastavení bude předem vyplněno.
  • urls.py, který uvádí trasy nebo adresy URL dostupné pro váš projekt Django, nebo pro které projekt vrátí odpovědi.
  • wsgi.py, který slouží webovým serverům kompatibilním s WSGI, jako je Apache HTTP nebo Nginx, k poskytování aplikací vašeho projektu.

Než začnete, vyzkoušejte, zda projekt funguje. Z příkazového řádku v adresáři obsahujícím váš projekt manage.py soubor, spustit:

python manage.py runserver

Tím by měl být spuštěn vývojový webový server dostupný na //127.0.0.1:8000/. Navštivte tento odkaz a měla by se zobrazit jednoduchá uvítací stránka s informacemi o úspěšné instalaci.

Nezapomeňte, že vývojový webový server by měl ne být použity k poskytování projektu Django veřejnosti. Nezmění se na potřebný provoz.

Vytváření aplikace Django

Dále musíme v tomto projektu vytvořit aplikaci. Přejděte do stejného adresáře jako manage.py a zadejte tento příkaz:

python manage.py startapp myapp

Tím se vytvoří podadresář pro aplikaci s názvem myapp který obsahuje následující:

  • A migrace adresář. Obsahuje kód používaný k migraci webu mezi verzemi jeho datového schématu.
  • admin.py. Obsahuje objekty používané integrovanými nástroji pro správu Django. Pokud má vaše aplikace administrátorské rozhraní nebo privilegované uživatele, můžete zde nakonfigurovat související objekty.
  • apps.py. Poskytuje informace o konfiguraci aplikace do projektu jako celku AppConfig objekt.
  • models.py. Obsahuje objekty, které definují datové struktury používané vaší aplikací k propojení s databázemi.
  • tests.py. Obsahuje všechny testy použité k zajištění toho, aby funkce a moduly vašeho webu fungovaly podle očekávání.
  • views.py. Obsahuje funkce, které vykreslují a vracejí odpovědi.

Abychom mohli s aplikací začít pracovat, musíme ji nejprve zaregistrovat u projektu. Chcete-li to provést, upravte myproj / settings.py a přidejte řádek do horní části INSTALLED_APPS seznam:

INSTALLED_APPS = [„myapp.apps.MyappConfig“, „django.contrib.admin“, ... 

Když se podíváte dovnitř myapp.apps, uvidíte předem vygenerovaný objekt s názvem MyappConfig, na co zde odkazujeme.

Přidávání tras a pohledů do vaší aplikace Django

Aplikace Django se při zpracování požadavků řídí základním vzorem:

  • Když je přijat příchozí požadavek, Django analyzuje URL pro trasa aplikovat na.
  • Trasy jsou definovány v urls.py, přičemž každá trasa je spojena s a Pohled, tj. funkce, která vrací data, která mají být odeslána zpět klientovi. Pohledy lze umístit kdekoli v projektu Django, ale nejlépe je je uspořádat do vlastních modulů.
  • Pohledy mohou obsahovat výsledky a šablona, tj. kód, který formátuje požadovaná data podle určitého designu.

Abychom získali představu o tom, jak všechny tyto kousky do sebe zapadají, upravme výchozí trasu naší ukázkové aplikace, abychom vrátili vlastní zprávu.

Trasy jsou definovány v urls.py v seznamu s názvem urlpatterns. Pokud otevřete vzorek urls.py, uvidíte urlpatterns již předdefinováno:

urlpatterns = [cesta („admin /“, admin.site.urls),] 

The cesta function — a Django built-in — takes a route and a view function as arguments and generates a reference to a URL path. Ve výchozím nastavení Django vytvoří admin cesta, která se používá pro správu webu, ale musíme si vytvořit vlastní cesty.

Přidejte další položku, aby celý soubor vypadal takto:

z django.contrib import admin z django.urls import zahrnout, cesta urlpatterns = [cesta ('admin /', admin.site.urls), cesta ('myapp /', zahrnout ('myapp.urls'))] 

The zahrnout funkce řekne Djangovi, aby hledal v souboru více informací o vzoru trasy myapp.urls. Všechny trasy nalezené v tomto souboru budou připojeny k trase nejvyšší úrovně myapp (např., //127.0.0.1:8080/myapp).

Dále vytvořte nový urls.py v myapp a přidejte následující:

z django.urls importovat cestu z. importovat zobrazení urlpatterns = [cesta („“, views.index)] 

Django předloží lomítko na začátek každé adresy URL, aby bylo možné určit kořen webu (/), jako URL zadáme pouze prázdný řetězec.

Nyní soubor upravte myapp / views.py takže to vypadá takto:

z django.http import HttpResponse def index (požadavek): vrátit HttpResponse („Hello, world!“) 

django.http.HttpResponse je vestavěný Django, který generuje odpověď HTTP z dodaného řetězce. Všimněte si, že žádost, který obsahuje informace o příchozím požadavku HTTP, musí být předán jako první parametr funkci zobrazení.

Zastavte a restartujte vývojový server a přejděte na //127.0.0.1:8000/myapp/. Měl bys vidět Ahoj světe! se zobrazí v prohlížeči.

Přidání tras s proměnnými v Django

Django může přijímat trasy, které obsahují proměnné jako součást své syntaxe. Řekněme, že jste chtěli přijmout adresy URL, které měly tento formát rok/. Toho můžete dosáhnout přidáním následujícího záznamu dourlpatterns:

cesta („year /“, views.year) 

Funkce zobrazení zobrazení. rok by pak bylo vyvoláno prostřednictvím cest jako rok / 1996, rok / 2010, a tak dále, s proměnnou rok předán jako parametr zobrazení. rok.

Chcete-li to vyzkoušet sami, přidejte výše uvedené urlpatterns vstup do myapp / urls.py, pak přidejte tuto funkci do myapp / views.py:

def year (request, year): return HttpResponse (‘Year: {}’. format (year)) 

Pokud přejdete na / myapp / year / 2010 na svém webu byste měli vidět Rok: 2010 zobrazí se v odezvě. Všimněte si, že trasy jako / myapp / year / rutabaga přinese chybu, protože int: omezení proměnné rok umožňuje pouze celé číslo v této poloze. Pro trasy je k dispozici mnoho dalších možností formátování.

Dřívější verze Django měly složitější a obtížně analyzovatelnou syntaxi tras. Pokud stále potřebujete přidat trasy pomocí staré syntaxe - například pro zpětnou kompatibilitu se starým projektem Django - můžete to udělat pomocí django.urls.re_path funkce.

Django šablony

Integrovaný jazyk šablony Django lze použít ke generování webových stránek z dat.

Šablony používané aplikacemi Django jsou uloženy v adresáři, který je ústředním bodem projektu: / šablony //. Pro naše myapp projekt, adresář bude myapp / templates / myapp /. Tato adresářová struktura se může zdát trochu trapná, ale Django může hledat šablony na více místech, takže se tak vyhnete kolizím názvů mezi šablonami se stejnými názvy ve více aplikacích.

Ve vašemmyapp / templates / myapp / adresář, vytvořte soubor s názvem year.html s následujícím obsahem:

Rok: {{year}} 

S jakoukoli hodnotou v rámci dvojitých složených závorek v šabloně se zachází jako s proměnnou. Se všemi ostatními se zachází doslova.

Modifikovat myapp / views.py vypadat takto:

z django.shortcuts import vykreslení z django.http import HttpResponse def index (požadavek): návrat HttpResponse (“Hello, world!”) def rok (požadavek, rok): data = {'year': year} návrat vykreslení (požadavek, 'myapp / year.html', data) 

The poskytnout funkce, zkratka Django (kombinace více vestavěných funkcí pro větší pohodlí), přebírá existující žádost objekt, hledá šablonu myapp / year.html v seznamu dostupných umístění šablon a předá slovník data jako kontext šablony.

Množství zpracování, které můžete provést na datech v šablonách Django, je záměrně poměrně omezené. Filozofií společnosti Django je prosazovat oddělení prezentace a obchodní logiky, kdykoli je to možné. Takto můžete procházet iterovatelným objektem a můžete hrát Jestliže pak jinak testy, ale úprava dat v šabloně je zamračená.

Například jednoduchý test „pokud“ lze kódovat takto:

{% if year> 2000%} year 21st century: {{year}} {% else%} year pre-21st century year: {{year}} {% endif%} 

The {% a %} značky vymezují bloky kódu, které lze spustit v šablonovém jazyce Djanga.

Pokud chcete použít propracovanější jazyk pro zpracování šablon, můžete zaměnit jiné, například Jinja2 nebo Mako. Django zahrnuje back-end integraci pro Jinja2, ale lze použít jakýkoli jazyk šablony, který vrací řetězec - například vrácením tohoto řetězce v HttpResponse objekt jako v případě našeho "Ahoj světe!" trasa.

Další kroky s Django

To, co jsme zde viděli, pokrývá pouze nejzákladnější prvky aplikace Django. Django obsahuje mnoho dalších komponent, které lze použít ve webovém projektu. To vše stojí za to podrobně diskutovat samostatně, ale ponechám vám krátký přehled:

  • Databáze a datové modely. Integrovaný ORM Django lze použít k definování datových struktur a vztahů mezi nimi pro vaši aplikaci, stejně jako migračních cest mezi verzemi těchto struktur.

  • formuláře. Django poskytuje konzistentní způsob, jak pohledy dodávají uživateli vstupní formuláře, načítají data, normalizují výsledky a poskytují konzistentní hlášení chyb.

  • Zabezpečení a utility. Django obsahuje mnoho integrovaných funkcí pro ukládání do mezipaměti, protokolování, zpracování relací, zpracování statických souborů a normalizaci adres URL. Rovněž sdružuje nástroje pro běžné potřeby zabezpečení, jako je použití kryptografických certifikátů nebo ochrana proti padělání napříč weby nebo clickjacking.

$config[zx-auto] not found$config[zx-overlay] not found