Django tīmekļa ietvaram ir modeļa skata veidnes (MVT) arhitektūra, kas padara to par vienīgo ietvaru, kas jums būs nepieciešams, lai izveidotu pilnīgu vietni vai tīmekļa lietojumprogrammu. Šis Python ietvars ļauj izveidot modeļus, kas ģenerē datu bāzes un renderē dinamiskas HTML veidnes lietotāja saskarnē, izmantojot skatus.
Django spēks nav noslēpums; tas ir ātrs, uzticams, mērogojams un drošs. Šīs programmatūras uzticamība, kā arī mērogojamība ir atkarīga no tās MVT arhitektūras. Un šajā rakstā jūs uzzināsit, kā tieši darbojas Django MVT arhitektūra.
Kas ir Django modelis?
Django MVT arhitektūras modelis nosaka to datu struktūru un uzvedību, kurus vēlaties saglabāt savā vietnē. Katrs jūsu izveidotais Django modelis ģenerē atbilstošu datu bāzes tabulu, kurā katrs modeļa atribūts kļūst par tabulas lauku.
Turpinot iestatīšanu no mūsu ievadraksts par Django, varat izveidot modeli pārdevējiem. Pārdevējam var būt pārdevēja modelis, kurā ir personas informācija, piemēram, vārds un kontaktinformācija, kā arī saistīts modelis katra pārdevēja pārdotajām precēm.
Esošā Django projekta faila struktūras paraugs
mana vietne/
mana vietne/
_pycache_
_init_.py
asgi.py
settings.py
urls.py
wsgi.py
pārdevēji/
migrācija
_init_.py
admin.py
apps.py
modeļi.py
test.py
views.py
db.sqlite3
pārvaldīt.py
Django modeļu izveide
Ja skatīsit pārdevēju lietotņu sadaļu iepriekš redzamajā failu struktūrā, jūs redzēsit failu ar nosaukumu modeļi.py. Šeit jūs izveidosiet visus savus Django modeļus savas vietnes pārdevēju sadaļai. Katrs jūsu izveidotais modelis būs apakšklase Django modeļa API, tāpēc katrs Django ģenerē modeļi.py failam ir noklusējuma modeļu importēšana.
Fails models.py
No django.db importa modeļiem
# Izveidojiet savus modeļus šeit.
klase Pārdevējs (modeļi. Modelis):
first_name = modeļi. CharField (max_length=30)
uzvārds = modeļi. CharField (max_length=30)
kontaktnumurs = modeļi. CharField (max_length=30)
klases Produkts (modeļi. Modelis):
pārdevējs = modeļi. ForeignKey (pārdevējs, on_delete=models. KASKĀDE)
preces_nosaukums = modeļi. CharField (max_length=100)
item_qantity = modeļi. Vesels skaitļa lauks()
preces_cena = modeļi. DecimalField (max_digits=9, decimal_places=2)
item_description = modeļi. Teksta lauks()
Iepriekš minētais kods ir atjauninātā satura kopija model.py failu. Fails tagad izveido divus modeļus — pārdevēju un produktu. Šiem modeļiem ir savstarpējās attiecības, kur vienam pārdevējam var tikt pārdoti daudzi produkti. Tātad produkta modelim ir a sveša atslēga no pārdevēja un an on_delete atribūts iestatīts uz modeļiem. KASKĀDE, kas nozīmē, ka, dzēšot pārdevēju, jūs automātiski izdzēsīsit visus produktus, kuriem tas ir primārā atslēga kā sveša atslēga.
Saistīts: Apgūstiet Python un Django jau šodien, izmantojot šos brīnišķīgos kursus Varat arī pamanīt, ka katram modelim iepriekš minētajā kodā nav primārās atslēgas. Tas ir tāpēc, ka Django automātiski ģenerēs a primārā atslēga ja jūs to nepārprotami neizveidojat.
Lai varētu izmantot jebkuru izveidoto modeli, jums ir jāpasaka Django, kur to atrast. Lai to izdarītu, jums būs jāpārvietojas uz settings.py failu un ievietojiet tā moduļa nosaukumu, kurā ir modeļi.py failā INSTALLED_APP sadaļā.
Šī raksta projekta paraugā modeļi.py fails atrodas pārdevēju modulī. Tāpēc atjaunināts INSTALLED_APP sadaļa skanēs šādi:
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"pārdevēji",
]
Izmantojot iepriekš minēto kodu, modeļi pārdevēju lietotnē tagad ir redzami Django vietnē, un tagad varat pāriet uz migrēšanu.
Migrācijas veikšana ir svarīga, jo šis process ir veids, kā modeļos veiktās izmaiņas izplatīt attiecīgajā datu bāzes shēmā. Tāpēc katru reizi, kad veicat izmaiņas savā modelī, jums būs jāveic migrācijas process, kas ietver divas darbības.
Pirmais solis ir veikt migrēšanu, kas ir komanda, kas izveido migrāciju, pamatojoties uz izmaiņām, kas konstatētas modeļi.py failu. Lai sāktu migrācijas procesu, jums būs jāatver terminālis, jāpārvietojas uz direktoriju, kurā atrodas jūsu Django projekts, un palaidiet serveri, izmantojot šādu komandu:
python manage.py runserver
Kad serveris darbojas vienā terminālī, atveriet jaunu termināli un ievadiet šādu komandu:
python manage.py makemigrations
Pēc izpildes terminālis radīs šādu izvadi:
“Pārdevēju” migrācijas:
sellers\migrations\0001_initial.py
- Izveidojiet modeļa pārdevēju
- Izveidojiet modeļa produktu
Iepriekš sniegtajā izvadē ir skaidri norādīts, ka jums tagad ir migrācija diviem modeļiem — pārdevējam un produktam. Tagad, pārejot uz migrācijas mapi savā pārdevēju modulī, redzēsit, ka tajā tagad ir jauns fails ar nosaukumu 0001_initial.py. Šajā failā atradīsit tikko izveidotās migrācijas.
Fails 0001_initial.py
# Ģenerēja Django 3.2.9, 2022-02-26 16:06no django.db importa migrācijas, modeļi
importēt django.db.models.deletion
klase Migrācija (migrācijas. Migrācija):
sākuma = patiess
atkarības = [
]
operācijas = [
migrācijas. CreateModel(
name='Pārdevējs',
lauki=[
('id', modeļi. BigAutoField (auto_created=True, Primera_key=True, serialize=False, verbose_name='ID')),
('first_name', modeļi. CharField (max_length=30)),
('uzvārds', modeļi. CharField (max_length=30)),
('contact_number', modeļi. CharField (max_length=30)),
],
),
migrācijas. CreateModel(
name='Produkts',
lauki=[
('id', modeļi. BigAutoField (auto_created=True, Primera_key=True, serialize=False, verbose_name='ID')),
('preces_nosaukums', modeļi. CharField (max_length=100)),
('item_qantity', modeļi. Vesels skaitļa lauks()),
('preces_cena', modeļi. DecimalField (decimal_places=2, max_digits=9)),
('preces_description', modeļi. Teksta lauks()),
('pārdevējs', modeļi. ForeignKey (on_delete=django.db.models.deletion. CASCADE, to='sellers.seller')),
],
),
]
Katru reizi, kad veicat jaunu migrāciju, migrācijas mape ģenerē jaunu šī faila versiju.
Otrais migrācijas procesa posms ir modeļu beidzot migrēšana. Tas nozīmē, ka jūs sinhronizējat datu bāzes stāvokli ar modeļi.py failu, izmantojot migrācijas, kuras tikko izveidojāt 0001_initial.py failu. Šo procesu var pabeigt (kamēr serveris joprojām darbojas) ar šādu komandu:
python manage.py migrēt
Kas ir Django veidne?
Veidnes ir veids, kā dinamiski ģenerēt HTML jūsu Django projektam. Katrai Django veidnei ir .html paplašinājums un statiskā un dinamiskā satura kombinācija. Django veidnēm ir unikāla sintakse, kas ietver jaunus veidus, kā izveidot mainīgos un tagus HTML dokumentā.
Django veidnes izveide
Lai šī raksta e-komercijas vietnes paraugā ieviestu veidnes, pārdevēju modulī ir jāizveido jauns direktorijs. Šis jaunais direktorijs ar nosaukumu "veidnes" būs visu pārdevēju lietotņu HTML dokumentu mājvieta, sākot ar sākumlapu.
Fails sellers_home.html
Pārdevēji | E-komercija
Laipni lūgti pārdevēji!
Kad esat izveidojis veidnes, jums tās būs jāpadara redzamas pakalpojumam Django, pievienojot veidņu direktoriju VEIDNES sadaļā settings.py failu. Atjauninātais VEIDNES sadaļa izskatīsies šādi:
VEIDNES = [
{
'BACKEND': 'django.template.backends.django. DjangoTemplates,
'DIRS': [
# jauns kods, kas norāda uz veidņu atrašanās vietu
BASE_DIR / "pārdevēji" / "veidnes"
],
'APP_DIRS': patiesi,
OPTIONS: {
'context_processors': [
"django.template.context_processors.debug",
"django.template.context_processors.request",
"django.contrib.auth.context_processors.auth",
"django.contrib.messages.context_processors.messages",
],
},
},
]
Tagad, kad Django zina, kur atrast vietnes veidnes, varat iet uz priekšu un renderēt tās lietotāja saskarnē, izmantojot skatu.
Kāds ir Django skatījums?
Skats ir Django MVT arhitektūras otrais slānis, veidne ir bezjēdzīga, ja vien skats to neatveido lietotāja saskarnē. Skats ir atbildīgs par tīmekļa pieprasījumu pieņemšanu un atbilstošu atbilžu (tostarp veidņu) atgriešanu. Visvienkāršākajā formā skats ir Python funkcija, kas tiek glabāta view.py sava Django projekta failu.
Django View izveide
The view.py fails atrodas Django projekta parauga pārdevēju modulī. Kad pārdevējs apmeklē jūsu vietni, jūs vēlaties, lai viņš dotos uz pārdevēja sākumlapu. Šī sākumlapa, ko izveidosit, izmantojot HTML veidni, līdzīgi tam, kas tika izveidota veidņu sadaļā iepriekš.
Fails view.py
no django.shortcuts importa renderēšanas
def indekss (pieprasījums):
atgriezt renderēšanu (pieprasījums, "sellers_home.html")
Iepriekš redzamajā skatā tiek pieņemts pieprasījums un tiek atgriezta pārdevēja HTML veidne. Tātad katru reizi, kad lietotājs apmeklē (vai pieprasa) http://127.0.0.1:8000/sellers/ viņi redzēs pārdevēju sākumlapu. Tas notiek pēc tam, kad esat izveidojis a urls.py failu pārdevēju modulī.
Pārdevēju urls.py fails
no django.urls importa ceļa
no. importēt skatus
urlpatterns = [
ceļš('', views.index, name='index'),
]
Un iekļaujiet ceļu uz pārdevēju moduli urls.py failu mapē urls.py failu, kas atrodas galvenajā Django direktorijā.
Vietnes fails urls.py
no django.contrib importa admin
no django.urls importa ietver, ceļš
urlpatterns = [
path('sellers/', include('sellers.urls')),
ceļš ('admin/', admin.site.urls),
]
Tagad, kad skats ir iestatīts, varat pārliecināties, ka Django serveris joprojām darbojas, un doties uz http://127.0.0.1:8000/sellers/ pārlūkprogrammā, lai skatītu pārdevēju sākumlapu.
Pārdevēju mājas lapa
Django MVT arhitektūra vs. MVC arhitektūra
Django MVT arhitektūra ievērojami atšķiras no populārās MVC arhitektūras.
MVT arhitektūras veidņu sadaļa darbojas tāpat kā skats MVC arhitektūrā, savukārt skats MVT arhitektūrā parāda īpašības, kas ir līdzīgas MVC kontrollerim arhitektūra. Tomēr modeļi abās arhitektūrās darbojas identiski.
Izmantojiet Model-View-Controller dizaina principus savām programmām, lai iegūtu tūlītējus rezultātus. Lūk, kā sākt darbu.
Lasiet Tālāk
- Programmēšana
- Programmēšana
- Python
Kadeiša Kīna ir pilnas komplektācijas programmatūras izstrādātāja un tehnisko/tehnoloģiju rakstniece. Viņai ir izteikta spēja vienkāršot dažus no vissarežģītākajiem tehnoloģiskajiem jēdzieniem; ražo materiālu, ko var viegli saprast ikviens tehnoloģiju iesācējs. Viņa aizraujas ar rakstīšanu, interesantas programmatūras izstrādi un ceļošanu pa pasauli (izmantojot dokumentālās filmas).
Abonējiet mūsu biļetenu
Pievienojieties mūsu informatīvajam izdevumam, lai saņemtu tehniskos padomus, pārskatus, bezmaksas e-grāmatas un ekskluzīvus piedāvājumus!
Noklikšķiniet šeit, lai abonētu