Programmēšana

Django apmācība: Sāciet darbu ar Django 2.0

Django ir universāls Python tīmekļa ietvars, kuru iedvesmoja Ruby on Rails un kurš izmanto daudzas tās pašas metaforas, lai padarītu tīmekļa izstrādi ātru un ērtu. Pilnībā ielādēts un elastīgs, Django ir kļuvis par vienu no Python visplašāk izmantotajiem tīmekļa ietvariem.

Django ietver praktiski visu nepieciešamo jebkura izmēra tīmekļa lietojumprogrammas izveidei, un tā popularitāte ļauj viegli atrast piemērus un palīdzību dažādiem scenārijiem. Plus Django nodrošina rīkus, kas ļauj jūsu lietojumprogrammai graciozi attīstīties un pievienot funkcijas, kā arī migrēt tās datu shēmu (ja tāda ir).

Django ir arī sarežģīta reputācija, jo ir nepieciešami daudzi komponenti un daudz “zem pārsega” konfigurācijas. Patiesībā jūs varat iegūt un palaist vienkāršu lietotni salīdzinoši īsā secībā, pēc tam paplašināt tās funkcionalitāti pēc vajadzības.

Šajā ceļvedī mēs iepazīsimies ar elementāras lietotnes Django 2.0 izveidi un īsi pieskaramies vissvarīgākajām funkcijām, kuras tā nodrošina tīmekļa izstrādātājiem.

Jaunināšana no Django 1.x

Ja jums ir pieredze ar agrāku Django 1.x versiju, šīs ir vissvarīgākās izmaiņas, par kurām jāapzinās:

  • Django 2.0 tikai atbalsta Python 3.4 un jaunākas versijas. Python 2.x nākamajās Django versijās netiks atbalstīts.
  • Django 2 seko Python 3 paraugam, izmantojot vietējās unikoda virknes, kur vien iespējams. Dažas Django funkcijas vairs nepieņems bytestrings kā ievadi.

Ir daudzas citas atpakaļ nesaderīgas izmaiņas, taču tās ir divas no nozīmīgākajām, it īpaši, uzsākot jaunus projektus.

Django galveno bibliotēku instalēšana

Lai instalētu Django 2.0, jums būs nepieciešama Python 3.4 vai labāka versija. Tad vienkāršākais veids, kā instalēt Django, ir Python's pip lietderība:

pip instalēt django

Tādējādi tiek instalētas galvenās Django bibliotēkas un django-admin komandrindas lietderība, ko izmanto Django projektu pārvaldībai.

Ja vēlaties strādāt kopā ar vairākām Django versijām, izveidojiet virtuālu vidi, instalējiet tur vēlamo Django versiju un izmantojiet to attiecīgajam Django projektam.

Ņemiet vērā, ka, lai izveidotu vairākus, nav jāizmanto virtuālās vides projektiem ar vienu Django gadījumu. Jums tie ir nepieciešami tikai, lai izmantotu dažādus Django punktu labojumus ietvaros ar dažādiem projektiem.

Jauna Django projekta veidošana

Django gadījumi tiek organizēti divos līmeņos: projektiem un lietotnes.

  • A projektu ir Django gadījums ar savu datu bāzes konfigurāciju, iestatījumiem un lietotnēm. Vislabāk ir domāt par projektu kā par vietu, kur glabāt visas izmantotās vietnes līmeņa konfigurācijas.
  • An lietotne ir projekta apakšnodaļa ar savu maršrutu un renderēšanas loģiku. Vienā Django projektā var ievietot vairākas lietotnes.

Lai izveidotu jaunu Django projektu no jauna, ievadiet direktoriju, kurā vēlaties saglabāt projektu, un ierakstiet:

django-admin startproject

kur ir gan projekta, gan apakšdirektorija nosaukums, kurā tiks glabāts projekts. Noteikti izvēlieties nosaukumu, kas, visticamāk, nesaskaras ar vārdu, kuru iekšēji izmanto Python vai Django. Tāds vārds kā myproj strādās lieliski.

Rezultātā direktorijā jābūt amanage.py fails, ko izmanto, lai kontrolētu lietotnes darbību no komandrindas, un cits apakšdirektorijs (arī ar projekta nosaukumu), kas satur šādus failus:

  • An __init__.py failu, kuru Python izmanto, lai apzīmētu apakšdirektoriju kā koda moduli.
  • settings.py, kurā ir projektam izmantotie iestatījumi. Daudzi no visbiežāk sastopamajiem iestatījumiem jums tiks iepriekš aizpildīti.
  • urls.py, kurā ir uzskaitīti jūsu Django projektam pieejamie maršruti vai vietrāži URL, vai uz kuriem projekts atbildēs.
  • wsgi.py, kuru jūsu projekta lietotņu apkalpošanai izmanto WSGI saderīgi tīmekļa serveri, piemēram, Apache HTTP vai Nginx.

Pirms visa cita pārbaudiet projektu, lai pārliecinātos, ka tas darbojas. No komandrindas direktorijā, kurā ir jūsu projekts manage.py failu, palaidiet:

python manage.py runerver

Tam vajadzētu sākt attīstības tīmekļa serveri, kas pieejams vietnē //127.0.0.1:8000/. Apmeklējiet šo saiti, un jums vajadzētu redzēt vienkāršu apsveikuma lapu, kurā norādīts, ka instalēšana bija veiksmīga.

Ņemiet vērā, ka izstrādes tīmekļa serverim vajadzētu izmantot Django projekta sabiedrībai. Tas nebūs mērogā, lai apstrādātu nepieciešamo datplūsmu.

Django lietotnes izveide

Tālāk mums ir jāizveido lietotne šī projekta ietvaros. Pārejiet uz to pašu direktoriju kā manage.py un izdodiet šo komandu:

python manag.py startapp myapp

Tas izveido apakškatalogu lietotnei ar nosaukumu myapp kas satur sekojošo:

  • A migrācijas direktorijā. Satur kodu, kas izmantots vietnes migrēšanai starp tās datu shēmas versijām.
  • admin.py. Satur objektus, kurus izmanto Django iebūvētie administrēšanas rīki. Ja jūsu lietotnei ir administratora saskarne vai priviliģēti lietotāji, šeit konfigurējiet saistītos objektus.
  • apps.py. Ar projekta palīdzību projektam kopumā sniedz konfigurācijas informāciju par lietotni AppConfig objekts.
  • models.py. Satur objektus, kas nosaka datu struktūras, kuras jūsu lietotne izmanto saskarnei ar datu bāzēm.
  • tests.py. Satur visus testus, kas izmantoti, lai pārliecinātos, ka jūsu vietnes funkcijas un moduļi darbojas kā paredzēts.
  • views.py. Satur funkcijas, kas sniedz un atgriež atbildes.

Lai sāktu strādāt ar lietotni, mums tā vispirms jāreģistrē projektā. Lai to izdarītu, rediģējiet myproj / settings.py un pievienojiet rindiņu INSTALLED_APPS saraksts:

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

Ja ieskatās myapp.apps, tiks parādīts iepriekš izveidots objekts ar nosaukumu MyappConfig, uz ko mēs šeit atsaucamies.

Maršrutu un skatu pievienošana lietotnei Django

Django lietotnes pieprasījumu apstrādē ievēro pamata modeli:

  • Kad tiek saņemts ienākošs pieprasījums, Django parsē URL vietnei URL maršrutu to piemērot.
  • Maršruti ir definēti urls.py, katrs maršruts ir saistīts ar a skats, t.i., funkcija, kas atgriež klientam nosūtāmos datus. Skati var atrasties jebkur Django projektā, taču tos vislabāk var sakārtot savos moduļos.
  • Skatos var būt a. Rezultāti veidne, t.i., kods, kas formatē pieprasītos datus atbilstoši noteiktai noformējumam.

Lai iegūtu priekšstatu par visu šo gabalu saderību, modificēsim mūsu lietotnes parauga noklusējuma maršrutu, lai atgrieztu pielāgotu ziņojumu.

Maršruti ir definēti urls.py nosauktajā sarakstā urlpatterns. Ja atverat paraugu urls.py, Jūs redzēsiet urlpatterns jau iepriekš definēts:

urlpatterns = [ceļš (‘admin /’, admin.site.urls),] 

The ceļš Funkcija - iebūvēta Django - kā argumentu ņem maršrutu un skata funkciju un ģenerē atsauci uz URL ceļu. Pēc noklusējuma Django izveido admin ceļš, kas tiek izmantots vietnes administrēšanai, bet mums ir jāizveido savi maršruti.

Pievienojiet citu ierakstu, lai viss fails izskatās šādi:

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

The iekļaut funkcija liek Django meklēt failā vairāk informācijas par maršruta modeli myapp.urls. Visi šajā failā atrodamie maršruti tiks pievienoti augstākā līmeņa maršrutam myapp (piem., //127.0.0.1:8080/myapp).

Pēc tam izveidojiet jaunu urls.py iekšā myapp un pievienojiet šo:

no django.urls importa ceļš no. importēt skatus urlpatterns = [ceļš (’’, views.index)] 

Django katra URL sākumā sagatavo slīpsvītru, lai norādītu vietnes sakni (/), mēs vienkārši piegādājam tukšu virkni kā URL.

Tagad rediģējiet failu myapp / views.py tāpēc tas izskatās šādi:

no django.http importa HttpResponse def indekss (pieprasījums): atgriezt HttpResponse (“Sveika, pasaule!”) 

django.http.HttpResponse ir iebūvēts Django, kas ģenerē HTTP atbildi no piegādātās virknes. Pieraksti to pieprasījumu, kas satur ienākošā HTTP pieprasījuma informāciju, ir jānodod kā pirmais parametrs skata funkcijai.

Pārtrauciet un restartējiet izstrādes serveri un dodieties uz //127.0.0.1:8000/myapp/. Jums vajadzētu redzēt Sveika pasaule! parādās pārlūkprogrammā.

Maršrutu pievienošana ar mainīgajiem Django

Django var pieņemt maršrutus, kuru sintaksē ir iekļauti mainīgie. Pieņemsim, ka vēlaties pieņemt vietrāžus URL ar formātu gads /. To varētu paveikt, pievienojot vietnei šādu ierakstuurlpatterns:

ceļš (‘gads /’, skatījumi.gads) 

Skata funkcija skati.gads pēc tam tiktu izsaukti pa tādiem maršrutiem kā gads / 1996, gads / 2010un tā tālāk ar mainīgo gadā nodots kā parametrs skati.gads.

Lai to izmēģinātu pats, pievienojiet iepriekš minēto urlpatterns ieeja myapp / urls.py, pēc tam pievienojiet šo funkciju myapp / views.py:

def gads (pieprasījums, gads): atgriezt HttpResponse (‘Gads: {}’. formāts (gads)) 

Ja jūs virzāties uz / myapp / gads / 2010 savā vietnē, jums vajadzētu redzēt Gads: 2010 tiek parādīts kā atbilde. Ņemiet vērā, ka maršruti patīk / myapp / year / rutabaga radīs kļūdu, jo int: ierobežojums mainīgajam gadā šajā pozīcijā atļauj tikai veselu skaitli. Maršrutiem ir pieejamas daudzas citas formatēšanas opcijas.

Iepriekšējās Django versijās maršrutu sintakse bija sarežģītāka un grūti analizējama. Ja jums joprojām ir jāpievieno maršruti, izmantojot veco sintaksi, piemēram, lai nodrošinātu savietojamību ar veco Django projektu, varat to izdarīt, izmantojot django.urls.re_path funkciju.

Django veidnes

Django iebūvēto veidņu valodu var izmantot, lai no datiem izveidotu tīmekļa lapas.

Django lietotņu izmantotās veidnes tiek glabātas direktorijā, kas ir projekta centrālais elements: / templates //. Priekš mūsu myapp projektu, direktorija būtu myapp / templates / myapp /. Šī direktoriju struktūra var šķist nedaudz neērta, taču Django var meklēt veidnes vairākās vietās, tāpēc tas ļauj izvairīties no vārdu sadursmēm starp veidnēm ar vienādiem nosaukumiem vairākās lietotnēs.

Jūsumyapp / templates / myapp / direktoriju, izveidojiet failu ar nosaukumu gads.html ar šādu saturu:

Gads: {{gads}} 

Jebkura vērtība dubulto cirtaino iekavu veidnē tiek uzskatīta par mainīgo. Viss pārējais tiek traktēts burtiski.

Mainīt myapp / views.py izskatīties šādi:

from django.shortcuts import render from django.http import HttpResponse def index (pieprasījums): return HttpResponse (“Sveika, pasaule!”) def gads (pieprasījums, gads): data = {'gads': gads} atgriezt renderēšanu (pieprasījums, “myapp / year.html”, dati) 

The renderēt funkcija, Django “īsceļš” (ērtības labad vairāku iebūvētu elementu kombinācija) izmanto esošo pieprasījumu objekts, meklē veidni myapp / year.html pieejamo veidņu atrašanās vietu sarakstā un nokārto vārdnīcu dati uz to kā veidnes kontekstu.

Apstrādes apjoms, ko varat veikt ar datiem Django veidnēs, ir apzināti diezgan ierobežots. Django filozofija ir panākt prezentācijas un biznesa loģikas nošķiršanu, kad vien iespējams. Tādējādi jūs varat veikt ciklu caur iterējamu objektu, un jūs varat veikt ja / tad / vēl testus, bet datu modificēšana veidnē ir neapmierināta.

Piemēram, vienkāršu testu “ja” var kodēt šādā veidā:

{% if year> 2000%} 21. gadsimta gads: {{year}} {% else%} gads pirms 21. gadsimta: {{year}} {% endif%} 

The {% un %} marķieri atdala koda blokus, kurus var izpildīt Django veidņu valodā.

Ja vēlaties izmantot sarežģītāku veidņu apstrādes valodu, varat nomainīt citas, piemēram, Jinja2 vai Mako. Django ietver back-end integrāciju Jinja2, taču var izmantot jebkuru veidņu valodu, kas atgriež virkni, piemēram, atgriežot šo virkni HttpResponse objekts kā mūsu gadījumā "Sveika pasaule!" maršrutu.

Nākamie soļi ar Django

Šeit redzamais attiecas tikai uz Django lietojumprogrammas pamata elementiem. Django ietver ļoti daudz citu komponentu, kurus var izmantot tīmekļa projektā. Visus šos ir vērts detalizēti apspriest atsevišķi, bet es jums atstāšu īsu pārskatu:

  • Datu bāzes un datu modeļi. Django iebūvēto ORM var izmantot, lai definētu datu struktūras un attiecības starp tām savai lietotnei, kā arī migrācijas ceļus starp šo struktūru versijām.

  • Veidlapas. Django nodrošina konsekventu veidu, kā skati var piegādāt ievades veidlapas lietotājam, izgūt datus, normalizēt rezultātus un nodrošināt konsekventu ziņojumu par kļūdām.

  • Drošība un komunālie pakalpojumi. Django ietver daudzas iebūvētās funkcijas kešatmiņai, reģistrēšanai, sesiju apstrādei, statisko failu apstrādei un URL normalizēšanai. Tas arī apvieno rīkus parastām drošības vajadzībām, piemēram, kriptogrāfisko sertifikātu izmantošanai vai aizsardzībai pret aizsardzību pret viltojumiem vai klikšķu uzlaušanu.

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