Programovanie

Výukový program pre Django: Začíname s Django 2.0

Django je univerzálny webový rámec pre Python, ktorý bol inšpirovaný programom Ruby on Rails a používa veľa rovnakých metafor na rýchle a ľahké vytvorenie webu. Plne nabitý a flexibilný sa Django stal jedným z najbežnejšie používaných webových rámcov Pythonu.

Django obsahuje prakticky všetko, čo potrebujete na zostavenie webovej aplikácie akejkoľvek veľkosti, a jeho popularita uľahčuje hľadanie príkladov a pomoci pre rôzne scenáre. Plus Django poskytuje nástroje, ktoré umožňujú vašej aplikácii elegantne sa vyvíjať a pridávať funkcie a migrovať jej schému údajov (ak ju má).

Django má tiež reputáciu zložitého, má veľa komponentov a vyžaduje veľa konfigurácie „pod kapotou“. Popravde, jednoduchú aplikáciu môžete spustiť v relatívne krátkom poradí a potom podľa potreby rozšíriť jej funkčnosť.

V tejto príručke sa pozrieme na vytvorenie základnej aplikácie Django 2.0 a stručne sa dotkneme najdôležitejších funkcií, ktoré poskytuje webovým vývojárom.

Inovácia z verzie Django 1.x

Ak máte skúsenosti s predchádzajúcou verziou 1.x Django, sú to tieto najdôležitejšie zmeny, ktoré si musíte uvedomiť:

  • Django 2.0 iba podporuje Python 3.4 a vyšší. Python 2.x nebude v budúcich verziách Django podporovaný.
  • Django 2 sa riadi vzorom využívania natívnych reťazcov Unicode v jazyku Python 3, kedykoľvek je to možné. Niektoré funkcie Django už nebudú akceptovať bytestring ako vstup.

Existuje mnoho ďalších spätne nekompatibilných zmien, sú to však dve z najvýznamnejších, najmä pri začatí nových projektov.

Inštalácia základných knižníc Django

Na inštaláciu Django 2.0 budete potrebovať Python 3.4 alebo lepší. Potom je najjednoduchší spôsob inštalácie Djanga prostredníctvom Pythonu pip užitočnosť:

pip nainštaluj django

Týmto sa nainštalujú základné knižnice Django a django-admin obslužný program príkazového riadku používaný na správu projektov Django.

Ak chcete pracovať s viacerými verziami Django vedľa seba, vytvorte si virtuálne prostredie, nainštalujte si tam požadovanú verziu Django a použite ju pre daný projekt Django.

Upozorňujeme, že na vytvorenie viacerých nemusíte používať virtuálne prostredia projektov s jednou inštanciou Djanga. Potrebujete ich len na použitie rôznych bodových revízií Djanga rámec s rôznymi projektmi.

Vytvára sa nový projekt Django

Inštancie Django sú usporiadané do dvoch úrovní: projektov a aplikácie.

  • A projekt je inštancia Django s vlastnou konfiguráciou databázy, nastaveniami a aplikáciami. Najlepšie je považovať projekt za miesto na uloženie všetkých konfigurácií na úrovni webu, ktoré použijete.
  • An aplikácia je podrozdelenie projektu s vlastnou trasou a vykresľovacou logikou. Do jedného projektu Django je možné umiestniť viac aplikácií.

Ak chcete úplne vytvoriť nový projekt Django, zadajte adresár, kam chcete projekt uložiť, a zadajte:

django-admin startproject

kde je názov projektu aj podadresára, kde bude projekt uložený. Určite si vyberte meno, pri ktorom je nepravdepodobné, že by kolidovalo s menom, ktoré interne používa Python alebo Django. Meno ako myproj bude fungovať dobre.

Výsledný adresár by mal obsahovať amanage.py súbor, ktorý sa používa na riadenie správania aplikácie z príkazového riadku, a ďalší podadresár (tiež s názvom projektu), ktorý obsahuje nasledujúce súbory:

  • An __init__.py súbor, ktorý používa Python na označenie podadresára ako kódového modulu.
  • settings.py, ktorá obsahuje nastavenia použité pre projekt. Mnohé z najbežnejších nastavení budú vopred vyplnené.
  • urls.py, ktorý obsahuje zoznam trás alebo adries URL dostupných pre váš projekt Django alebo pre ktoré projekt vráti odpovede.
  • wsgi.py, ktorý používajú webové servery kompatibilné s WSGI, ako je Apache HTTP alebo Nginx, na poskytovanie aplikácií vášho projektu.

Skôr ako čokoľvek iné, vyskúšajte projekt, aby ste sa uistili, že funguje. Z príkazového riadku v adresári obsahujúcom projekt manage.py súbor, spustiť:

python manage.py runserver

To by malo spustiť vývojový webový server dostupný na //127.0.0.1:8000/. Navštívte tento odkaz a mala by sa vám zobraziť jednoduchá uvítacia stránka, ktorá informuje o úspešnej inštalácii.

Upozorňujeme, že vývojový webový server by mal nie byť použité na obsluhu projektu Django pre verejnosť. Nebude sa škálovať tak, aby zvládla potrebnú premávku.

Vytvára sa aplikácia Django

Ďalej musíme v rámci tohto projektu vytvoriť aplikáciu. Prejdite do rovnakého adresára ako manage.py a zadajte tento príkaz:

python manage.py startapp myapp

Týmto sa vytvorí podadresár pre aplikáciu s názvom myapp ktorý obsahuje nasledovné:

  • A migrácie adresár. Obsahuje kód používaný na migráciu webu medzi verziami jeho údajovej schémy.
  • admin.py. Obsahuje objekty používané vstavanými administračnými nástrojmi Django. Ak má vaša aplikácia administrátorské rozhranie alebo privilegovaných používateľov, tu by ste nakonfigurovali súvisiace objekty.
  • apps.py. Poskytuje informácie o konfigurácii aplikácie ako celku prostredníctvom AppConfig objekt.
  • models.py. Obsahuje objekty, ktoré definujú dátové štruktúry používané vašou aplikáciou na prepojenie s databázami.
  • tests.py. Obsahuje všetky testy použité na zabezpečenie toho, aby funkcie a moduly vášho webu fungovali podľa očakávania.
  • views.py. Obsahuje funkcie, ktoré vykresľujú a vracajú odpovede.

Aby sme mohli s aplikáciou začať pracovať, musíme ju najskôr zaregistrovať v projekte. Za týmto účelom upravte myproj / settings.py a pridajte čiaru do hornej časti súboru INSTALLED_APPS zoznam:

INSTALLED_APPS = [‘myapp.apps.MyappConfig’, ‘django.contrib.admin‘, ... 

Ak sa pozriete dovnútra myapp.apps, uvidíte vopred vygenerovaný objekt s názvom MyappConfig, na čo tu odkazujeme.

Pridávanie trás a zobrazení do vašej aplikácie Django

Aplikácie Django postupujú podľa základného vzoru pri spracovaní požiadaviek:

  • Po prijatí prichádzajúcej žiadosti analyzuje Django adresu URL súboru a trasa aplikovať na.
  • Trasy sú definované v urls.py, pričom každá trasa je spojená s a vyhliadka, tj. funkcia, ktorá vracia údaje, ktoré sa majú odoslať späť klientovi. Zobrazenia je možné umiestniť kdekoľvek v projekte Django, ale je najlepšie ich usporiadať do vlastných modulov.
  • Zobrazenia môžu obsahovať výsledky a šablóna, tj. kód, ktorý formátuje požadované údaje podľa určitého vzoru.

Ak chcete získať predstavu o tom, ako všetky tieto kúsky do seba zapadajú, upravme predvolenú trasu našej ukážkovej aplikácie tak, aby vrátila vlastnú správu.

Trasy sú definované v urls.py v zozname s názvom urlpatterns. Ak otvoríte vzorku urls.py, uvidíte urlpatterns už preddefinované:

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

The cesta function — a Django built-in — vezme trasu a funkciu view ako argumenty a vygeneruje odkaz na cestu URL. Django štandardne vytvára admin cesta, ktorá sa používa na správu stránok, ale musíme si vytvoriť vlastné trasy.

Pridajte ďalšiu položku, aby celý súbor vyzeral takto:

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

The zahrnúť funkcia povie Djangovi, aby v súbore vyhľadal viac informácií o vzore trasy myapp.urls. Všetky trasy nájdené v tomto súbore budú pripojené k trase najvyššej úrovne myapp (napr. //127.0.0.1:8080/myapp).

Ďalej vytvorte nový urls.py v myapp a pridať nasledujúce:

z django.urls importná cesta z. importovať zobrazenia urlpatterns = [cesta („“, views.index)] 

Django prepája lomku na začiatok každej adresy URL, aby určil koreň stránky (/), ako adresu URL dodáme iba prázdny reťazec.

Teraz súbor upravte myapp / views.py takže to vyzerá takto:

z django.http import HttpResponse def index (požiadavka): vrátiť HttpResponse („Ahoj, svet!“) 

django.http.HttpResponse je vstavaný Django, ktorý generuje odpoveď HTTP z dodaného reťazca. Poznač si to žiadosť, ktorý obsahuje informácie o prichádzajúcej požiadavke HTTP, musí byť odovzdaný ako prvý parameter funkcii prezerania.

Zastavte a reštartujte vývojový server a prejdite na //127.0.0.1:8000/myapp/. Mali by ste vidieť Ahoj, svet! sa zobrazia v prehliadači.

Pridávanie trás s premennými v Django

Django môže akceptovať trasy, ktoré obsahujú premenné ako súčasť svojej syntaxe. Povedzme, že ste chceli prijať adresy URL, ktoré mali tento formát rok /. Môžete to dosiahnuť pridaním nasledujúceho záznamu dourlpatterns:

cesta („rok /“, zobrazenia.rok) 

Funkcia pohľadu pohľady.rok by sa potom vyvolalo cestou ako rok / 1996, rok / 2010, a tak ďalej, s premennou rok odovzdané ako parameter pohľady.rok.

Ak si to chcete vyskúšať, pridajte vyššie uvedené urlpatterns vstup do myapp / urls.py, potom pridajte túto funkciu do myapp / views.py:

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

Ak prejdete na / myapp / rok / 2010 na vašom webe, mali by ste vidieť Rok: 2010 zobrazené v odpovedi. Upozorňujeme, že trasy ako / myapp / year / rutabaga prinesie chybu, pretože int: obmedzenie premennej rok umožňuje iba celé číslo v tejto polohe. Pre trasy je k dispozícii mnoho ďalších možností formátovania.

Staršie verzie Djanga mali zložitejšiu a ťažko analyzovateľnú syntax pre trasy. Ak stále potrebujete pridať trasy pomocou starej syntaxe - napríklad kvôli spätnej kompatibilite so starým projektom Django - môžete to urobiť pomocou príkazu django.urls.re_path funkcia.

Django šablóny

Na generovanie webových stránok z údajov je možné použiť vstavaný šablónový jazyk Django.

Šablóny používané aplikáciami Django sú uložené v adresári, ktorý je ústredným bodom projektu: / templates //. Pre naše myapp projekt, adresár by bol myapp / templates / myapp /. Táto adresárová štruktúra sa môže zdať trochu nepríjemná, ale Django môže hľadať šablóny na viacerých miestach, takže sa tak zabráni kolíziám mien medzi šablónami s rovnakými názvami vo viacerých aplikáciách.

Vo vašommyapp / templates / myapp / adresár, vytvorte súbor s názvom year.html s nasledujúcim obsahom:

Rok: {{year}} 

S každou hodnotou v dvojitých zložených zátvorkách v šablóne sa zaobchádza ako s premennou. So všetkým ostatným sa zaobchádza doslovne.

Upraviť myapp / views.py vyzerať takto:

z django.shortcuts import vykreslenia z django.http import HttpResponse def index (požiadavka): návrat HttpResponse (“Hello, world!”) def year (request, year): data = {'year': year} return render (request, 'myapp / year.html', data) 

The vykresliť funkcia, skratka Django (kombinácia viacerých zabudovaných funkcií pre väčšie pohodlie), preberá existujúce žiadosť objekt, vyhľadá šablónu myapp / year.html v zozname dostupných umiestnení šablón a odovzdá slovník údaje ako kontext pre šablónu.

Množstvo spracovania, ktoré môžete vykonať s údajmi v šablónach Django, je zámerne dosť obmedzené. Filozofiou spoločnosti Django je presadzovať oddelenie prezentácie a obchodnej logiky, kedykoľvek je to možné. Takto môžete prechádzať iterovateľným objektom a môžete vykonávať ako / potom / inak testy, ale modifikácia údajov v šablóne je zamračená.

Napríklad jednoduchý test „ak“ je možné kódovať týmto spôsobom:

{% if year> 2000%} 21. storočie: {{year}} {% else%} rok pred 21. storočím: {{year}} {% endif%} 

The {% a %} značky vymedzujú bloky kódu, ktoré je možné spustiť v šablónovom jazyku Djanga.

Ak chcete použiť sofistikovanejší jazyk na spracovanie šablón, môžete ich vymeniť za iné, napríklad Jinja2 alebo Mako. Django obsahuje back-end integráciu pre Jinja2, ale je možné použiť akýkoľvek šablónový jazyk, ktorý vracia reťazec - napríklad vrátením tohto reťazca v HttpResponse objekt ako v prípade nášho „Ahoj, svet!“ trasa.

Ďalšie kroky s Djangom

To, čo sme tu videli, pokrýva iba tie najzákladnejšie prvky aplikácie Django. Django obsahuje mnoho ďalších komponentov, ktoré je možné použiť vo webovom projekte. Všetky z nich stojí za to podrobne ich osobitne prediskutovať, ponechám vám však stručný prehľad:

  • Databázy a dátové modely. Integrované ORM od Django možno použiť na definovanie dátových štruktúr a vzťahov medzi nimi pre vašu aplikáciu, ako aj migračných ciest medzi verziami týchto štruktúr.

  • Formuláre. Django poskytuje konzistentný spôsob, ako pohľady poskytujú používateľovi vstupné formuláre, načítajú údaje, normalizujú výsledky a poskytujú konzistentné hlásenie chýb.

  • Bezpečnosť a verejné služby. Django obsahuje mnoho vstavaných funkcií na ukladanie do medzipamäte, protokolovanie, spracovanie relácií, prácu so statickými súbormi a normalizáciu adries URL. Taktiež združuje nástroje pre bežné bezpečnostné potreby, ako je použitie kryptografických certifikátov alebo ochrana pred falšovaním na viacerých weboch alebo pomocou clickjackingu.

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