Programavimas

„Django“ pamoka: pradėkite naudoti „Django 2.0“

„Django“ yra visiems tinkanti „Python“ žiniatinklio sistema, kurią įkvėpė „Ruby on Rails“ ir kuri naudoja daug tų pačių metaforų, kad žiniatinklio kūrimas būtų greitas ir lengvas. Visiškai įkrautas ir lankstus „Django“ tapo vienu iš plačiausiai naudojamų „Python“ žiniatinklio sistemų.

„Django“ apima praktiškai viską, ko reikia norint sukurti bet kokio dydžio žiniatinklio programą, o dėl savo populiarumo lengva rasti pavyzdžių ir pagalbos įvairiems scenarijams. „Plus Django“ pateikia įrankius, leidžiančius jūsų programai grakščiai tobulėti ir pridėti funkcijų bei perkelti jos duomenų schemą (jei ji yra).

„Django“ taip pat turi komplekso reputaciją, reikalinga daugybė komponentų ir daug „po gaubtu“ konfigūracijos. Tiesą sakant, galite sukurti ir paleisti paprastą programą gana greitai, tada išplėsti jos funkcionalumą iš ten, jei reikia.

Šiame vadove apžvelgsime pradinę „Django 2.0“ programą ir trumpai paliesime svarbiausias funkcijas, kurias ji teikia interneto kūrėjams.

Atnaujinimas iš „Django 1.x“

Jei turite patirties su ankstesniu „1.x“ „Django“ leidimu, tai yra svarbiausi pokyčiai, apie kuriuos reikia žinoti:

  • „Django 2.0“ tik palaiko „Python 3.4“ ir naujesnes versijas. „Python 2.x“ nebus palaikomas būsimose „Django“ versijose.
  • „Django 2“ remiasi „Python 3“ modeliu, kai įmanoma, naudojant vietines „Unicode“ eilutes. Kai kurios „Django“ funkcijos nebepriims baito tvarkymo priemonių kaip įvesties.

Yra daugybė kitų nesuderinamų atgalinių pokyčių, tačiau tai yra du reikšmingiausi pokyčiai, ypač pradedant naujus projektus.

Pagrindinių „Django“ bibliotekų diegimas

Norėdami įdiegti „Django 2.0“, jums reikės „Python 3.4“ ar naujesnės versijos. Tada paprasčiausias būdas įdiegti „Django“ yra „Python“ pip naudingumas:

pip įdiegti django

Tai įdiegia pagrindines „Django“ bibliotekas ir django-admin komandinės eilutės įrankis, naudojamas valdant „Django“ projektus.

Jei norite dirbti su keliomis „Django“ versijomis, sukurkite virtualią aplinką, įdiekite ten norimą „Django“ versiją ir naudokite ją atitinkamam „Django“ projektui.

Atminkite, kad jums nereikia naudoti virtualios aplinkos kuriant kelias projektus su vienu Django pavyzdžiu. Jums jų reikia tik norint naudoti skirtingus „Django“ pakeitimus sistema su skirtingais projektais.

Naujo „Django“ projekto kūrimas

„Django“ egzemplioriai yra suskirstyti į dvi pakopas: projektus ir programas.

  • A projektą yra „Django“ egzempliorius su savo duomenų bazės konfigūracija, nustatymais ir programomis. Geriausia galvoti apie projektą kaip apie vietą, kurioje bus saugomos visos svetainės lygio konfigūracijos, kurias naudosite.
  • An programa yra projekto padalinys su savo maršrutu ir pateikimo logika. Į vieną „Django“ projektą galima įdėti kelias programas.

Norėdami sukurti naują „Django“ projektą nuo nulio, įveskite katalogą, kuriame norite išsaugoti projektą, ir įveskite:

„django-admin“ pradžios projektas

kur yra ir projekto, ir pakatalogio, kuriame bus saugomas projektas, pavadinimas. Būtinai pasirinkite pavadinimą, kuris greičiausiai nesusidurs su vardu, kurį „Python“ ar „Django“ naudoja viduje. Panašus vardas myproj veiks puikiai.

Gautame kataloge turėtų būti amanage.py failas, kuris naudojamas valdyti programos elgseną iš komandinės eilutės, ir kitas pakatalogis (taip pat su projekto pavadinimu), kuriame yra šie failai:

  • An __init__.py failą, kurį „Python“ naudoja pakatalogiui paskirti kaip kodo modulį.
  • settings.py, kuriame yra projektui naudojami nustatymai. Daugelis dažniausiai naudojamų nustatymų bus iš anksto užpildyti jums.
  • urls.py, kuriame išvardyti jūsų „Django“ projektui galimi maršrutai ar URL arba į kuriuos projektas pateiks atsakymus.
  • wsgi.py, kurį naudoja WSGI suderinami žiniatinklio serveriai, pvz., „Apache HTTP“ arba „Nginx“, teikiant jūsų projekto programas.

Prieš ką nors kitą išbandykite projektą ir įsitikinkite, kad jis veikia. Iš komandinės eilutės kataloge, kuriame yra jūsų projektas manage.py failą, paleiskite:

python manage.py runerver

Tai turėtų pradėti kurti interneto serverį, kurį galima rasti adresu //127.0.0.1:8000/. Apsilankykite šioje nuorodoje ir turėtumėte pamatyti paprastą pasveikinimo puslapį, kuriame sakoma, kad diegimas buvo sėkmingas.

Atkreipkite dėmesį, kad kūrimo žiniatinklio serveris turėtų ne būti naudojami „Django“ projektui aptarnauti visuomenei. Jis nebus pritaikytas reikalingam srautui tvarkyti.

„Django“ programos kūrimas

Tada turime sukurti programą šiame projekte. Eikite į tą patį katalogą kaip manage.py ir išleiskite šią komandą:

python manage.py startapp myapp

Tai sukuria programos pavadinimą pavadintą katalogą myapp kuriame yra:

  • A migracijos kataloge. Yra kodas, naudojamas svetainei perkelti iš vienos jos duomenų schemos versijos.
  • admin.py. Sudėtyje yra objektai, kuriuos naudoja integruoti „Django“ administravimo įrankiai. Jei jūsų programoje yra administratoriaus sąsaja arba privilegijuoti vartotojai, čia sukonfigūruosite susijusius objektus.
  • apps.py. Pateikiama projekto konfigūracijos informacija apie projektą „AppConfig“ objektas.
  • models.py. Yra objektai, apibrėžiantys duomenų struktūras, kurias jūsų programa naudoja sąsajai su duomenų bazėmis.
  • tests.py. Turi visus bandymus, naudojamus siekiant užtikrinti, kad jūsų svetainės funkcijos ir moduliai veiktų taip, kaip numatyta.
  • views.py. Turi funkcijas, kurios pateikia ir pateikia atsakymus.

Norėdami pradėti dirbti su programa, pirmiausia turime ją užregistruoti projekte. Norėdami tai padaryti, redaguokite myproj / settings.py ir į viršų pridėkite eilutę INSTALLED_APPS sąrašas:

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

Jei pažvelgsi myapp.appspamatysite iš anksto sugeneruotą objektą pavadinimu „MyappConfig“, ką mes čia ir nurodome.

Maršrutų ir rodinių pridėjimas prie „Django“ programos

„Django“ programos tvarko užklausas pagal pagrindinį modelį:

  • Kai gaunama gaunama užklausa, Django analizuoja a. URL maršrutu pritaikyti.
  • Maršrutai yra apibrėžti urls.py, kiekvienas maršrutas susietas su a vaizdas, t. y. funkcija, kuri grąžina klientui atgal siunčiamus duomenis. Vaizdai gali būti bet kurioje „Django“ projekto vietoje, tačiau jie geriausiai sutvarkyti į savo modulius.
  • Rodiniuose gali būti a. Rezultatai šabloną, t. y. kodas, kuris formuoja prašomus duomenis pagal tam tikrą dizainą.

Norėdami sužinoti, kaip visi šie kūriniai sutampa, pakeiskite numatytąjį programos pavyzdžio maršrutą, kad pateiktume pasirinktinį pranešimą.

Maršrutai yra apibrėžti urls.py pavadintame sąraše URL modeliai. Jei atidarysite mėginį urls.py, pamatysite URL modeliai jau iš anksto apibrėžtas:

urlpatterns = [kelias (‘admin /’, admin.site.urls),] 

kelias funkcija - „Django“ integruota - kaip argumentą laiko maršrutą ir rodinio funkciją ir sugeneruoja nuorodą į URL kelią. Pagal numatytuosius nustatymus Django sukuria administratorius kelias, kuris naudojamas administruojant svetainę, tačiau turime sukurti savo maršrutus.

Pridėkite dar vieną įrašą, kad visas failas atrodytų taip:

iš django.contrib importuoti administratorių iš django.urls importuoti, kelias urlpatterns = [kelias (‘admin /’, admin.site.urls), kelias (‘myapp /’, įtraukti (‘myapp.urls’))] 

įtraukti funkcija liepia Django ieškoti daugiau maršruto modelio informacijos faile myapp.urls. Visi tame faile rasti maršrutai bus pridėti prie aukščiausio lygio maršruto myapp (pvz., //127.0.0.1:8080/myapp).

Tada sukurkite naują urls.py į myapp ir pridėkite:

iš django.urls importo kelias iš. importuoti rodinius urlpatterns = [kelias (’’, views.index)] 

Django kiekvieno URL pradžioje paruošia pasvirąjį brūkšnį, kad nurodytų svetainės šaknį (/), mes tiesiog pateikiame tuščią eilutę kaip URL.

Dabar redaguokite failą „myapp / views.py“ taigi atrodo taip:

iš django.http importo „HttpResponse def“ indeksas (užklausa): grąžinti „HttpResponse“ („Sveikas, pasauli!“) 

django.http.HttpResponse yra „Django“ integruotasis elementas, kuris generuoja HTTP atsakymą iš pateiktos eilutės. Prisimink tai prašymą, kuriame yra gaunamos HTTP užklausos informacija, turi būti perduotas kaip pirmasis parametras rodinio funkcijai.

Sustabdykite ir iš naujo paleiskite kūrimo serverį ir eikite į //127.0.0.1:8000/myapp/. Jūs turėtumėte pamatyti Labas pasauli! rodomi naršyklėje.

Maršrutų su kintamaisiais pridėjimas Django

„Django“ gali priimti maršrutus, kuriuose kintamieji yra jų sintaksės dalis. Tarkime, kad norėjote priimti URL, kurių formatas buvo metai /. Tai galite padaryti pridėdami šį įrašą prieURL modeliai:

kelias (‘metai /’, peržiūros.metai) 

Peržiūros funkcija peržiūros.metai tada būtų naudojamasi tokiais maršrutais kaip metai / 1996, metai / 2010, ir taip toliau, su kintamuoju metus perduotas kaip parametras peržiūros.metai.

Norėdami tai išbandyti patys, pridėkite aukščiau pateiktą informaciją URL modeliai įėjimas į myapp / urls.py, tada pridėkite šią funkciją prie „myapp / views.py“:

def metai (užklausa, metai): grąžinti „HttpResponse“ („Metai: {}“. formatas (metai)) 

Jei naršote / myapp / metai / 2010 savo svetainėje, turėtumėte pamatyti Metai: 2010 m rodomas atsakant. Atkreipkite dėmesį, kad maršrutai patinka / myapp / year / rutabaga duos klaidą, nes int: kintamojo apribojimas metus leidžia tik sveiką skaičių toje pozicijoje. Maršrutuose yra daugybė kitų formatavimo parinkčių.

Ankstesnėse „Django“ versijose buvo sudėtingesnė ir sunkiau analizuojama maršrutų sintaksė. Jei vis tiek reikia pridėti maršrutus naudojant senąją sintaksę, pvz., Norint suderinti atgal su senu „Django“ projektu, galite tai padaryti naudodami django.urls.re_path funkcija.

Django šablonai

„Django“ integruota šablonų kalba gali būti naudojama kuriant tinklalapius iš duomenų.

Šablonai, kuriuos naudoja „Django“ programos, saugomi kataloge, kuris yra pagrindinis projekto projektas: / templates //. Mums myapp projektas, katalogas bus myapp / templates / myapp /. Ši katalogų struktūra gali pasirodyti šiek tiek nepatogi, tačiau „Django“ gali ieškoti šablonų keliose vietose, todėl taip išvengiama vardų susidūrimo tarp šablonų su tais pačiais pavadinimais keliose programose.

Jūsųmyapp / templates / myapp / katalogą, sukurkite failą pavadinimu metai.html turinį:

Metai: {{metai}} 

Bet kokia dvigubų garbanotų petnešų vertė šablone traktuojama kaip kintamasis. Visa kita traktuojama pažodžiui.

Keisti „myapp / views.py“ atrodyti taip:

from django.shortcuts import render from django.http import HttpResponse def index (request): return HttpResponse (“Labas, pasauli!”) def metai (užklausa, metai): data = {'metai': metai} grąžinti (užklausa, „myapp / year.html“, duomenys) 

perteikti funkcija, „Django“ „spartusis klavišas“ (patogumui patogus kelių integruotų elementų derinys), naudoja esamą prašymą objektas, ieško šablono myapp / year.html galimų šablonų vietų sąraše ir perduoda žodyną duomenis į jį kaip šablono kontekstą.

„Django“ šablonuose esančių duomenų apdorojimo kiekis yra tyčia gana ribotas. Django filosofija yra priversti atskirti pristatymą ir verslo logiką, kai tik įmanoma. Taigi galite pereiti per kartojamą objektą ir galite atlikti jei / tada / dar testus, tačiau šablone esančių duomenų modifikavimas yra paniekintas.

Pavyzdžiui, paprastą testą „jei“ galima užkoduoti taip:

{% if metai> 2000%} XXI amžiaus metai: {{year}} {% else%} metai prieš XXI amžių: {{year}} {% endif%} 

{% ir %} žymekliai atriboja kodo blokus, kuriuos galima vykdyti Django šablonų kalba.

Jei norite naudoti sudėtingesnę šablonų apdorojimo kalbą, galite pakeisti kitas, pvz., „Jinja2“ ar „Mako“. „Django“ apima „Jinja2“ integravimą į pabaigą, tačiau gali būti naudojama bet kokia šablono kalba, kuri pateikia eilutę, pavyzdžiui, grąžindama tą eilutę HttpResponse objektas kaip ir mūsų atveju "Labas pasauli!" maršrutu.

Kiti žingsniai su Django

Tai, ką mes čia matėme, apima tik pagrindinius „Django“ programos elementus. „Django“ apima labai daug kitų komponentų, kuriuos galima panaudoti interneto projekte. Visa tai verta išsamiai aptarti atskirai, tačiau paliksiu jums trumpą apžvalgą:

  • Duomenų bazės ir duomenų modeliai. „Django“ integruotasis ORM gali būti naudojamas apibrėžiant jūsų programos duomenų struktūras ir ryšius, taip pat migracijos kelius tarp tų struktūrų versijų.

  • Formos. „Django“ pateikia nuoseklų būdą, kaip rodiniai vartotojui gali pateikti įvesties formas, nuskaityti duomenis, normalizuoti rezultatus ir nuosekliai pranešti apie klaidas.

  • Saugumas ir komunalinės paslaugos. „Django“ apima daugybę integruotų talpyklų išsaugojimo, registravimo, sesijų tvarkymo, statinių failų tvarkymo ir URL normalizavimo funkcijų. Ji taip pat sujungia įrankius, skirtus bendriems saugumo poreikiams, pvz., Kriptografinių sertifikatų naudojimui, apsaugai nuo apgaulės klastojimo ar paspaudimų.