Programiranje

Vadnica za Django: Začnite z uporabo Django 2.0

Django je enoten za vse Pythonov spletni okvir, ki ga je navdihnil Ruby on Rails in uporablja številne iste metafore za hiter in enostaven spletni razvoj. Django je v celoti naložen in prilagodljiv, eden najbolj razširjenih Pythonovih spletnih okvirov.

Django vključuje tako rekoč vse, kar potrebujete za izdelavo katere koli velikosti spletne aplikacije, njegova priljubljenost pa olajša iskanje primerov in pomoč za različne scenarije. Poleg tega Django ponuja orodja, ki omogočajo, da se vaša aplikacija elegantno razvija in doda funkcije ter za selitev njene podatkovne sheme (če jo ima).

Django ima tudi sloves zapletenega kompleta, saj zahteva veliko komponent in veliko konfiguracije "pod pokrovom". V resnici lahko preprosto aplikacijo zaženete in zaženete v razmeroma kratkem vrstnem redu, nato pa po potrebi razširite njeno funkcionalnost.

V tem priročniku se bomo sprehodili po ustvarjanju osnovne aplikacije Django 2.0 in se na kratko dotaknili najpomembnejših funkcij, ki jih ponuja za spletne razvijalce.

Nadgradnja z Django 1.x

Če imate izkušnje s prejšnjo 1.x različico Djanga, so to najpomembnejše spremembe, ki se jih morate zavedati:

  • Django 2.0 samo podpira Python 3.4 in novejše različice. Python 2.x v prihodnjih različicah Djanga ne bo podprt.
  • Django 2 sledi vzorcu Pythona 3 uporabe izvornih nizov Unicode, kjer je to mogoče. Nekatere funkcije Django ne bodo več sprejele bystringov kot vhod.

Obstaja še veliko drugih nezdružljivih sprememb, vendar sta dve najpomembnejši, zlasti pri zagonu novih projektov.

Namestitev Djangovih osnovnih knjižnic

Če želite namestiti Django 2.0, potrebujete Python 3.4 ali novejšo različico. Potem je Django najlažje namestiti prek Pythona pip uporabnost:

pip namestite django

S tem se namestijo osnovne knjižnice Django in django-admin pripomoček ukazne vrstice, ki se uporablja za upravljanje projektov Django.

Če želite delati z več različicami Django vzporedno, ustvarite navidezno okolje, tam namestite želeno različico Django in jo uporabite za zadevni projekt Django.

Upoštevajte, da vam ni treba uporabljati navideznih okolij za ustvarjanje več projekti z enim primerkom Djanga. Potrebujete jih le za uporabo različnih točkovnih revizij Djanga okvir z različnimi projekti.

Ustvarjanje novega projekta Django

Primerki Django so organizirani v dveh nivojih: projekti in aplikacij.

  • A projekt je primerek Django z lastno konfiguracijo baze podatkov, nastavitvami in aplikacijami. Najbolje je, da si o projektu zamislite kot prostor za shranjevanje vseh konfiguracij na ravni spletnega mesta, ki jih boste uporabili.
  • An app je pododdelek projekta z lastno potjo in logiko upodabljanja. V en projekt Django je mogoče namestiti več aplikacij.

Če želite ustvariti nov projekt Django iz nič, vnesite imenik, kamor želite shraniti projekt, in vnesite:

django-admin startproject

kje je ime projekta in podimenika, v katerem bo projekt shranjen. Izberite ime, ki verjetno ne bo trčilo v ime, ki ga interno uporablja Python ali Django. Ime kot myproj bo delovalo v redu.

Nastali imenik mora vsebovati amanage.py datoteka, ki se uporablja za nadzor vedenja aplikacije iz ukazne vrstice, in drug podimenik (tudi z imenom projekta), ki vsebuje naslednje datoteke:

  • An __init__.py datoteko, ki jo Python uporablja za označevanje podimenika kot modula kode.
  • settings.py, ki vsebuje nastavitve, uporabljene za projekt. Številne najpogostejše nastavitve bodo vnaprej izpolnjene za vas.
  • urls.py, ki navaja poti ali URL-je, ki so na voljo za vaš projekt Django, ali za katere bo projekt vrnil odgovore.
  • wsgi.py, ki ga uporabljajo spletni strežniki, združljivi z WSGI, na primer Apache HTTP ali Nginx, za oskrbo aplikacij vašega projekta.

Pred vsem drugim preizkusite projekt in se prepričajte, da deluje. Iz ukazne vrstice v imeniku, ki vsebuje projekt manage.py datoteka, zaženite:

python manage.py runserver

To bi moralo zagnati razvojni spletni strežnik, ki je na voljo na //127.0.0.1:8000/. Obiščite to povezavo in videli boste preprosto pozdravno stran, ki vam pove, da je bila namestitev uspešna.

Upoštevajte, da bi moral spletni strežnik za razvoj ne uporabiti za služenje projekta Django javnosti. Ne bo prilagodila potrebnega prometa.

Ustvarjanje aplikacije Django

Nato moramo znotraj tega projekta ustvariti aplikacijo. Pomaknite se do istega imenika kot manage.py in izdajte ta ukaz:

python manage.py startapp myapp

To ustvari podimenik za aplikacijo z imenom myapp ki vsebuje naslednje:

  • A migracije imenik. Vsebuje kodo, ki se uporablja za selitev spletnega mesta med različicami njegove podatkovne sheme.
  • admin.py. Vsebuje predmete, ki jih uporabljajo vgrajena orodja za upravljanje Djanga. Če ima vaša aplikacija skrbniški vmesnik ali privilegirane uporabnike, bi tukaj nastavili povezane predmete.
  • apps.py. Omogoča celotnemu projektu informacije o konfiguraciji o aplikaciji s pomočjo AppConfig predmet.
  • models.py. Vsebuje predmete, ki opredeljujejo podatkovne strukture, ki jih aplikacija uporablja za vmesnike z bazami podatkov.
  • tests.py. Vsebuje vse teste, ki se uporabljajo za zagotovitev, da funkcije in moduli vašega spletnega mesta delujejo, kot je predvideno.
  • views.py. Vsebuje funkcije, ki upodabljajo in vrnejo odzive.

Za začetek dela z aplikacijo jo moramo najprej registrirati v projektu. Če želite to narediti, uredite myproj / settings.py in dodajte vrstico na vrh INSTALLED_APPS seznam:

INSTALLED_APPS = ['myapp.apps.MyappConfig', 'django.contrib.admin', ... 

Če pogledaš noter myapp.apps, boste videli vnaprej ustvarjen objekt z imenom MyappConfig, na kar se sklicujemo tukaj.

Dodajanje poti in pogledov v aplikacijo Django

Aplikacije Django sledijo osnovnemu vzorcu za obdelavo zahtev:

  • Ko prejme dohodno zahtevo, Django razčleni URL za poti za uporabo.
  • Poti so opredeljene v urls.py, pri čemer je vsaka pot povezana z a pogled, to je funkcija, ki vrne podatke, ki jih je treba stranki poslati nazaj. Pogledi se lahko nahajajo kjer koli v projektu Django, vendar so najbolje organizirani v lastne module.
  • Pogledi lahko vsebujejo rezultate a predloga, to je koda, ki zahtevane podatke oblikuje v skladu z določeno zasnovo.

Če si želite predstaviti, kako se vsi ti deli ujemajo, spremenimo privzeto pot vzorčne aplikacije, da vrne sporočilo po meri.

Poti so opredeljene v urls.py na seznamu z imenom urlpatterns. Če odprete vzorec urls.py, boste videli urlpatterns že vnaprej določeno:

urlpatterns = [pot ('admin /', admin.site.urls),] 

The pot funkcija - vgrajen Django - vzame pot in funkcijo pogleda kot argumente in ustvari sklic na pot URL-ja. Django privzeto ustvari datoteko skrbnik pot, ki se uporablja za skrbništvo spletnega mesta, vendar moramo ustvariti lastne poti.

Dodajte še en vnos, tako da bo celotna datoteka videti tako:

from django.contrib import admin from django.urls import include, path urlpatterns = [path (‘admin /’, admin.site.urls), path (‘myapp /’, include (‘myapp.urls’))] 

The vključujejo funkcija pove Djangu, da v datoteki poišče več informacij o vzorcu poti myapp.urls. Vse poti, ki jih najdete v tej datoteki, bodo priložene poti na najvišji ravni myapp (npr. //127.0.0.1:8080/myapp).

Nato ustvarite novo urls.py v myapp in dodajte naslednje:

iz django.urls uvozna pot iz. uvoz pogledov urlpatterns = [pot (‘’, views.index)] 

Django doda poševnico na začetek vsakega URL-ja, tako da določite koren mesta (/), kot URL navedemo prazen niz.

Zdaj uredite datoteko myapp / views.py tako izgleda tako:

iz django.http uvoz HttpResponse def indeks (zahteva): vrni HttpResponse (“Pozdravljen, svet!”) 

django.http.HttpResponse je vgrajen Django, ki generira odziv HTTP iz dobavljenega niza. Upoštevajte to prošnja, ki vsebuje informacije za dohodno zahtevo HTTP, je treba kot prvi parameter poslati funkciji pogleda.

Ustavite in znova zaženite razvojni strežnik ter se pomaknite do //127.0.0.1:8000/myapp/. Moral bi videti Pozdravljen, svet! se prikažejo v brskalniku.

Dodajanje poti s spremenljivkami v Django

Django lahko sprejme poti, ki vključujejo spremenljivke kot del svoje sintakse. Recimo, da ste želeli sprejeti URL-je, ki so imeli takšno obliko leto /. To lahko dosežete z dodajanjem naslednjega vnosa vurlpatterns:

pot (‘leto /’, pogledi.leto) 

Funkcija pogleda pogledi.let bi se nato skliceval po poteh, kot je leto / 1996, leto / 2010in tako naprej s spremenljivko leto prenese kot parameter v pogledi.let.

Če želite to preizkusiti sami, dodajte zgoraj urlpatterns vstop v myapp / urls.py, nato dodajte to funkcijo v myapp / views.py:

def leto (zahteva, leto): vrnitev HttpResponse (‘Leto: {}’. format (leto)) 

Če se pomaknete do / myapp / leto / 2010 na svojem spletnem mestu, bi morali videti Leto: 2010 prikazano kot odgovor. Upoštevajte, da so na primer poti / myapp / leto / rutabaga bo povzročilo napako, ker int: omejitev spremenljivke leto dovoljuje samo celo število v tem položaju. Za poti so na voljo številne druge možnosti oblikovanja.

Prejšnje različice Djanga so imele bolj zapleteno in težko razčlenljivo sintakso za poti. Če morate še vedno dodati poti s staro sintakso - na primer za združljivost s starim projektom Django - lahko to storite z uporabo django.urls.re_path funkcijo.

Predloge Django

Djangov vgrajeni jezik predloge je mogoče uporabiti za ustvarjanje spletnih strani iz podatkov.

Predloge, ki jih uporabljajo aplikacije Django, so shranjene v imeniku, ki je osrednjega pomena za projekt: / predloge //. Za naš myapp projekt, bi bil imenik myapp / predloge / myapp /. Ta struktura imenika se morda zdi nekoliko nerodna, toda Django lahko predloge išče na več mestih, zato se izogne ​​trčenju imen med predlogami z enakimi imeni v več aplikacijah.

V vašemmyapp / predloge / myapp / imenik, ustvarite datoteko z imenom leto.html z naslednjo vsebino:

Leto: {{leto}} 

Katera koli vrednost znotraj dvojnih oklepajev v predlogi se obravnava kot spremenljivka. Vse ostalo se obravnava dobesedno.

Spremeni myapp / views.py videti tako:

from django.shortcuts import render from django.http import HttpResponse def index (request): return HttpResponse (“Hello, world!”) def year (request, year): data = {'year': year} return render (request, 'myapp / year.html', podatki) 

The upodabljanje funkcija, bližnjica Django (kombinacija več vgrajenih datotek za udobje), zavzame obstoječo prošnja predmet, poišče predlogo myapp / year.html na seznamu razpoložljivih mest predloge in posreduje slovar podatkov kot kontekst za predlogo.

Količina obdelave podatkov v predlogah Django je namerno precej omejena. Djangova filozofija je uveljaviti ločevanje predstavitve in poslovne logike, kadar koli je to mogoče. Tako lahko skozi zanko, ki jo je mogoče ponoviti, lahko izvedete če / potem / drugače preizkusov, vendar je spreminjanje podatkov v predlogi nenaklonjeno.

Preprost test »če« lahko na primer kodiramo na ta način:

{% if year> 2000%} Leto 21. stoletja: {{leto}} {% else%} Leto pred 21. stoletjem: {{leto}} {% endif%} 

The {% in %} označevalniki omejujejo bloke kode, ki jih je mogoče izvesti v jeziku predloge Django.

Če želite uporabiti bolj izpopolnjen jezik za obdelavo predlog, lahko zamenjate druge, na primer Jinja2 ali Mako. Django vključuje zaledno integracijo za Jinja2, vendar je mogoče uporabiti kateri koli jezik predloge, ki vrne niz - na primer z vrnitvijo tega niza v HttpResponse objekt kot v primeru našega "Pozdravljen, svet!" poti.

Naslednji koraki z Django

Kar smo videli tukaj, zajema le najosnovnejše elemente aplikacije Django. Django vključuje veliko drugih komponent, ki jih je mogoče uporabiti v spletnem projektu. O vseh je vredno podrobno razpravljati ločeno, vendar vam bom pustil kratek pregled:

  • Podatkovne baze in podatkovni modeli. Djangov vgrajeni ORM se lahko uporablja za določanje podatkovnih struktur in odnosov med njimi za vašo aplikacijo ter poti za selitev med različicami teh struktur.

  • Obrazci. Django ponuja dosleden način, da pogledi uporabniku dobavljajo vhodne obrazce, pridobivajo podatke, normalizirajo rezultate in zagotavljajo dosledno poročanje o napakah.

  • Varnost in pripomočki. Django vključuje številne vgrajene funkcije za predpomnjenje, beleženje, obdelavo sej, obdelavo statičnih datotek in normalizacijo URL-jev. Vključuje tudi orodja za običajne varnostne potrebe, kot je uporaba kriptografskih potrdil ali zaščita pred zaščito pred ponarejanjem ali klikanjem.