„Django“ žiniatinklio sistema turi modelio peržiūros šablono (MVT) architektūrą, todėl tai yra vienintelė sistema, kurios jums reikės norint sukurti visą svetainę ar žiniatinklio programą. Ši „Python“ sistema leidžia kurti modelius, kurie generuoja duomenų bazes ir pateikia dinaminius HTML šablonus vartotojo sąsajoje naudojant rodinius.
Django galia nėra paslaptis; tai greita, patikima, keičiamo dydžio ir saugi. Šios programinės įrangos patikimumas ir mastelio keitimas priklauso nuo jos MVT architektūros. Šiame straipsnyje jūs tiksliai sužinosite, kaip veikia Django MVT architektūra.
Kas yra Django modelis?
Django MVT architektūros modelis apibrėžia duomenų, kuriuos norite saugoti svetainėje, struktūrą ir elgesį. Kiekvienas jūsų sukurtas Django modelis sukuria atitinkamą duomenų bazės lentelę, kurioje kiekvienas modelio atributas tampa lentelės lauku.
Tęsiame sąranką iš mūsų įvadinis straipsnis apie Django, galite sukurti modelį pardavėjams. Pardavėjas gali turėti pardavėjo modelį, kuriame yra asmeninė informacija, pvz., vardas ir kontaktinė informacija, ir susijęs kiekvieno pardavėjo parduodamų prekių modelis.
Esama pavyzdinė Django projekto failų struktūra
mano svetainė/
mano svetainė/
_pycache_
_init_.py
asgi.py
settings.py
urls.py
wsgi.py
pardavėjai/
migracija
_init_.py
admin.py
apps.py
modeliai.py
test.py
views.py
db.sqlite3
valdyti.py
Django modelių kūrimas
Jei pažvelgsite į pardavėjų programos skiltį aukščiau esančioje failų struktūroje, pamatysite failą pavadinimu modeliai.py. Čia sukursite visus „Django“ modelius savo svetainės pardavėjų skilčiai. Kiekvienas jūsų sukurtas modelis bus poklasis Django modelio API, todėl kiekvienas Django sukurtas modeliai.py faile yra numatytasis modelių importas.
Modelis.py failas
Iš django.db importuojamų modelių
# Sukurkite savo modelius čia.
klasės Pardavėjas (modeliai. Modelis):
vardas = modeliai. CharField (maks._ilgis = 30)
pavardė = modeliai. CharField (maks._ilgis = 30)
kontaktinis_numeris = modeliai. CharField (maks._ilgis = 30)
klasės Prekė (modeliai. Modelis):
pardavėjas = modeliai. ForeignKey (pardavėjas, on_delete=models. KASKADA)
prekės_pavadinimas = modeliai. CharField (maks._ilgis = 100)
item_qantity = modeliai. Sveikasis laukas ()
prekės_kaina = modeliai. Dešimtainis laukas (maks._skaitmenys = 9, dešimtainės vietos = 2)
item_description = modeliai. Teksto laukas()
Aukščiau pateiktas kodas yra atnaujinto turinio kopija modelis.py failą. Dabar failas sukuria du modelius – pardavėjo ir produkto. Šiuos modelius sieja „vienas su daugeliu“ ryšys, kai vienas pardavėjas gali parduoti daug produktų. Taigi, gaminio modelis turi a svetimas raktas iš pardavėjo ir an on_delete nustatytas atributas modeliai. KASKADA, o tai reiškia, kad ištrynę pardavėją automatiškai ištrinsite visus produktus, kuriuose jis yra pirminis raktas kaip svetimas raktas.
Susijęs: Išmokite Python ir Django šiandien per šiuos nuostabius kursus Taip pat galite pastebėti, kad kiekvienas iš anksčiau pateiktame kode pateiktų modelių neturi pirminio rakto. Taip yra todėl, kad „Django“ automatiškai sugeneruos a pirminis raktas jei jo aiškiai nesukuriate.
Prieš naudodami bet kurį sukurtą modelį, turėsite nurodyti Django, kur jį rasti. Norėdami tai padaryti, turėsite pereiti į settings.py failą ir įterpkite modulio, kuriame yra modeliai.py failą, į INSTALLED_APP skyrius.
Šio straipsnio pavyzdiniame projekte modeliai.py failas yra pardavėjų modulyje. Todėl atnaujinta INSTALLED_APP skyrius skambės taip:
INSTALLED_APPS = [
„django.contrib.admin“,
„django.contrib.auth“,
„django.contrib.contenttypes“,
„django.contrib.sessions“,
„django.contrib.messages“,
„django.contrib.staticfiles“,
"pardavėjai",
]
Naudojant aukščiau pateiktą kodą, pardavėjų programoje esantys modeliai dabar matomi „Django“ svetainėje, o dabar galite pereiti prie perkėlimo.
Perkėlimas yra svarbus, nes šis procesas yra būdas paskleisti modeliuose atliktus pakeitimus į atitinkamą duomenų bazės schemą. Taigi kiekvieną kartą, kai keičiate modelį, turėsite atlikti perkėlimo procesą, kurį sudaro du veiksmai.
Pirmas žingsnis yra atlikti perkėlimą, tai yra komanda, kuri sukuria perkėlimą pagal aptiktus pakeitimus modeliai.py failą. Norėdami pradėti perkėlimo procesą, turėsite atidaryti terminalą, pereiti į katalogą, kuriame yra jūsų Django projektas, ir paleisti serverį naudodami šią komandą:
python manage.py runserver
Kai serveris veikia viename terminale, atidarykite naują terminalą ir įveskite šią komandą:
python manage.py makemigrations
Po vykdymo terminalas duos tokią išvestį:
„Pardavėjų“ perkėlimas:
sellers\migrations\0001_initial.py
- Sukurkite pardavėjo modelį
- Sukurti modelio gaminį
Aukščiau pateikta produkcija aiškiai nurodo, kad dabar turite dviejų modelių – pardavėjo ir produkto – perkėlimą. Dabar, jei naršysite į perkėlimo aplanką pardavėjų modulyje, pamatysite, kad jame dabar yra naujas failas 0001_initial.py. Šiame faile rasite ką tik sukurtus perkėlimus.
Failas 0001_initial.py
# Sukūrė Django 3.2.9 2022-02-26 16:06iš django.db importo migracijos, modeliai
importuoti django.db.models.deletion
klasė Migracija (migracijos. Migracija):
inicialus = Tiesa
priklausomybės = [
]
operacijos = [
migracijos. CreateModel(
name='Pardavėjas',
laukai=[
(„id“, modeliai. BigAutoField (auto_created=Tiesa, Prime_key=Tiesa, serialize=False, verbose_name='ID')),
(„first_name“, modeliai. CharField (maks._ilgis = 30)),
(„pavardė“, modeliai. CharField (maks._ilgis = 30)),
('contact_number', modeliai. CharField (maks._ilgis = 30)),
],
),
migracijos. CreateModel(
name='Produktas',
laukai=[
(„id“, modeliai. BigAutoField (auto_created=Tiesa, Prime_key=Tiesa, serialize=False, verbose_name='ID')),
(„prekės_pavadinimas“, modeliai. CharField (maks._ilgis = 100)),
(„item_qantity“, modeliai. IntegerField()),
(„prekės_kaina“, modeliai. Dešimtainis laukas (decimal_places=2, max_digits=9)),
(„prekės_aprašymas“, modeliai. Teksto laukas()),
(„pardavėjas“, modeliai. ForeignKey (on_delete=django.db.models.deletion. CASCADE, to='pardavėjai.pardavėjas')),
],
),
]
Kiekvieną kartą, kai atliekate naują perkėlimą, perkėlimo aplankas sukuria naują šio failo versiją.
Antrasis perkėlimo proceso veiksmas – pagaliau perkelti modelius. Tai reiškia, kad jūs sinchronizuojate duomenų bazės būseną su modeliai.py failą, naudodami perkėlimus, kuriuos ką tik sukūrėte 0001_initial.py failą. Šį procesą galite užbaigti (kol serveris vis dar veikia) naudodami šią komandą:
python manage.py perkelti
Kas yra Django šablonas?
Šablonai yra būdas dinamiškai generuoti HTML jūsų Django projektui. Kiekvienas Django šablonas turi .html plėtinys ir statinio bei dinaminio turinio derinys. „Django“ šablonai turi unikalią sintaksę, apimančią naujus kintamųjų ir žymų kūrimo būdus HTML dokumente.
„Django“ šablono kūrimas
Norėdami pristatyti šablonus šio straipsnio pavyzdinėje el. prekybos svetainėje, pardavėjų modulyje turėsite sukurti naują katalogą. Šis naujas katalogas, vadinamas „šablonai“, bus visų HTML dokumentų, skirtų pardavėjų programoms, vieta, pradedant nuo pagrindinio puslapio.
Failas sellers_home.html
Pardavėjai | Elektroninė prekyba
Sveiki pardavėjai!
Sukūrę šablonus turėsite padaryti juos matomus Django pridėdami savo šablonų katalogą prie ŠABLONAI skyrių settings.py failą. Atnaujintas ŠABLONAI skyrius atrodys taip:
ŠABLONAI = [
{
„BACKEND“: „django.template.backends.django. „DjangoTemplates“,
„DIRS“: [
# naujas kodas, nurodantis šablonų vietą
BASE_DIR / „pardavėjai“ / „šablonai“
],
„APP_DIRS“: tiesa,
'GALIMYBĖS': {
'context_processors': [
„django.template.context_processors.debug“,
„django.template.context_processors.request“,
„django.contrib.auth.context_processors.auth“,
„django.contrib.messages.context_processors.messages“,
],
},
},
]
Dabar, kai „Django“ žino, kur rasti svetainės šablonus, galite eiti į priekį ir pateikti juos vartotojo sąsajoje naudodami rodinį.
Kas yra Django žvilgsnis?
Rodinys yra antrasis Django MVT architektūros sluoksnis, šablonas yra nenaudingas, nebent rodinys jį perteikia vartotojo sąsajai. Rodinys yra atsakingas už žiniatinklio užklausų priėmimą ir atitinkamų atsakymų (įskaitant šablonus) grąžinimą. Paprasčiausia rodinys yra Python funkcija, saugoma view.py jūsų Django projekto failą.
„Django View“ kūrimas
The view.py failas yra pavyzdinio Django projekto pardavėjų modulyje. Kai pardavėjas apsilankys jūsų svetainėje, norėsite, kad jis patektų į pardavėjo pagrindinį puslapį. Šį pagrindinį puslapį sukursite naudodami HTML šabloną, panašiai kaip anksčiau pateiktoje šablonų skiltyje sukurtą.
Failas view.py
iš django.shortcuts importo pateikimo
def indeksas (užklausa):
grąžinti pateikimą (užklausa, "pardavėjai_namai.html")
Aukščiau pateiktame rodinyje pateikiama užklausa ir pateikiamas pardavėjo HTML šablonas. Taigi kiekvieną kartą vartotojui apsilankius (arba paprašius) http://127.0.0.1:8000/sellers/ jie matys pardavėjo pagrindinį puslapį. Tai atliekama po to, kai sukuriate a urls.py failą pardavėjų modulyje.
Pardavėjų urls.py failas
iš django.urls importo kelio
iš. importuoti rodinius
urlpatterns = [
kelias ('', views.index, name='index'),
]
Ir įtraukite kelią į pardavėjų modulį urls.py failą urls.py failą, esantį pagrindiniame „Django“ kataloge.
Svetainės urls.py failas
iš django.contrib importo admin
iš django.urls importo apima, kelias
urlpatterns = [
path('sellers/', include('sellers.urls')),
kelias ('admin/', admin.site.urls),
]
Dabar, kai vaizdas nustatytas, galite užtikrinti, kad „Django“ serveris vis dar veikia, ir pereiti į http://127.0.0.1:8000/sellers/ naršyklėje, kad pamatytumėte pardavėjo pagrindinį puslapį.
Pardavėjų pagrindinis puslapis
Django MVT architektūra vs. MVC architektūra
Django MVT architektūra gerokai skiriasi nuo populiariosios MVC architektūros.
MVT architektūros šablono skyrius veikia taip pat, kaip ir vaizdas MVC architektūroje, o MVT architektūros rodinyje rodomos savybės, panašios į MVC valdiklio architektūra. Tačiau abiejų architektūrų modeliai veikia vienodai.
Taikykite Model-View-Controller projektavimo principus savo programoms, kad gautumėte tiesioginių rezultatų. Štai kaip pradėti.
Skaitykite toliau
- Programavimas
- Programavimas
- Python
Kadeisha Kean yra visos programinės įrangos kūrėja ir techninių / technologijų rašytoja. Ji turi išskirtinį gebėjimą supaprastinti kai kurias sudėtingiausias technologines koncepcijas; gaminant medžiagą, kurią gali lengvai suprasti bet kuris technologijų naujokas. Ji aistringai rašo, kuria įdomią programinę įrangą ir keliauja po pasaulį (per dokumentinius filmus).
Prenumeruokite mūsų naujienlaiškį
Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. knygų ir išskirtinių pasiūlymų!
Spauskite čia norėdami užsiprenumeruoti