Webový rámec Django má architekturu model-view-template (MVT), což z něj činí jediný rámec, který budete potřebovat k vytvoření kompletního webu nebo webové aplikace. Tento rámec Pythonu vám umožňuje vytvářet modely, které generují databáze a vykreslují dynamické šablony HTML do uživatelského rozhraní pomocí zobrazení.
Síla Djanga není žádným tajemstvím; je rychlý, spolehlivý, škálovatelný a bezpečný. Spolehlivost a také škálovatelnost tohoto softwaru závisí na jeho architektuře MVT. A v tomto článku se přesně dozvíte, jak funguje architektura MVT Django.
Jaký je Djangoův model?
Model v architektuře MVT společnosti Django definuje strukturu a chování dat, která chcete ukládat prostřednictvím svého webu. Každý model Django, který vytvoříte, generuje odpovídající databázovou tabulku, kde se každý atribut modelu stane polem v tabulce.
Pokračujeme v nastavení od našeho úvodní článek o Django, můžete vytvořit model pro prodejce. Prodejce může mít model prodejce, který obsahuje osobní údaje, jako je jméno a kontaktní údaje, a související model pro položky, které každý prodejce prodává.
Stávající vzorová struktura souboru projektu Django
moje stránka/
moje stránka/
_pycache_
_init_.py
asgi.py
settings.py
urls.py
wsgi.py
prodejci/
migrace
_init_.py
admin.py
apps.py
modely.py
test.py
views.py
db.sqlite3
spravovat.py
Vytváření modelů Django
Pokud se podíváte do části aplikace prodejců ve struktuře souborů výše, uvidíte soubor s názvem modely.py. Zde vytvoříte všechny své modely Django pro sekci prodejců vašeho webu. Každý model, který vytvoříte, bude podtřídou Django's Model API, což je důvod, proč každý Django vygeneroval modely.py soubor má výchozí import modelů.
Soubor models.py
Z importu modelů django.db
# Zde si vytvořte své modely.
třída Prodejce (modely. Modelka):
křestní_jméno = modely. CharField (max_length=30)
last_name = modely. CharField (max_length=30)
kontaktní_číslo = modely. CharField (max_length=30)
třída Produkt (modely. Modelka):
prodejce = modely. ForeignKey (Prodejce, on_delete=models. KASKÁDA)
item_name = modely. CharField (max_length=100)
item_qantity = modely. IntegerField()
item_price = modely. DecimalField (max_digits=9, decimal_places=2)
item_description = modely. Textové pole()
Výše uvedený kód je kopií aktualizovaného obsahu model.py soubor. Soubor nyní vytváří dva modely – prodejce a produkt. Tyto modely sdílejí vztah one-to-many, kde jeden prodejce může mít na prodej mnoho produktů. Takže model produktu má a cizí klíč od prodejce a an on_delete atribut nastaven na modely. KASKÁDA, což znamená, že když smažete prodejce, automaticky smažete každý produkt, který to má primární klíč jako cizí klíč.
Příbuzný: Naučte se Python a Django ještě dnes s těmito úžasnými kurzy Můžete si také všimnout, že každý z modelů ve výše uvedeném kódu nemá primární klíč. Je to proto, že Django automaticky vygeneruje a primární klíč pokud ho explicitně nevytvoříte.
Než budete moci použít jakýkoli model, který vytvoříte, musíte Djangovi sdělit, kde jej najde. Chcete-li to provést, musíte přejít na settings.py a vložte název modulu, který obsahuje modely.py souboru, do INSTALLED_APP sekce.
V ukázkovém projektu pro tento článek modely.py soubor je v modulu prodejců. Proto aktualizované INSTALLED_APP oddíl bude znít takto:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'prodejci',
]
S výše uvedeným kódem jsou nyní modely v aplikaci prodejců viditelné na webu Django a nyní můžete přejít k migracím.
Provádění migrací je důležité, protože tento proces představuje způsob, jak rozšířit změny, které provedete ve svých modelech, do odpovídajícího databázového schématu. Takže pokaždé, když provedete změny ve svém modelu, budete muset provést proces migrace – který zahrnuje dva kroky.
Prvním krokem je provedení migrací, což je příkaz, který vytváří migrace na základě změn zjištěných v souboru modely.py soubor. Chcete-li zahájit proces migrace, budete muset otevřít svůj terminál, přejít do adresáře s vaším projektem Django a spustit server pomocí následujícího příkazu:
runserver python manage.py
Se serverem spuštěným v jednom terminálu otevřete nový terminál a zadejte následující příkaz:
python manage.py makemigrations
Po spuštění terminál vytvoří následující výstup:
Migrace pro 'prodejce':
sellers\migrations\0001_initial.py
- Vytvořte model Prodejce
- Vytvořte modelový produkt
Výše uvedený výstup jasně uvádí, že nyní máte migrace pro dva modely – prodejce a produkt. Pokud nyní přejdete do složky migrace v modulu vašich prodejců, uvidíte, že nyní obsahuje nový soubor s názvem 0001_initial.py. V tomto souboru najdete migrace, které jste právě vytvořili.
Soubor 0001_initial.py
# Vygeneroval Django 3.2.9 dne 26.02.2022 16:06z django.db importovat migrace, modely
importovat django.db.models.deletion
třída Migrace (migrace. Migrace):
počáteční = pravda
závislosti = [
]
operace = [
migrací. VytvořitModel(
name='Prodejce',
pole=[
('id', modely. BigAutoField (auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('křestní_jméno', modely. CharField (max_length=30)),
('last_name', modely. CharField (max_length=30)),
('contact_number', modely. CharField (max_length=30)),
],
),
migrací. VytvořitModel(
name='Produkt',
pole=[
('id', modely. BigAutoField (auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('název_položky', modely. CharField (max_length=100)),
('item_qantity', modely. IntegerField()),
('item_price', modely. DecimalField (desetinná_místa=2, max_digits=9)),
('popis_položky', modely. Textové pole()),
(„prodejce“, modely. ForeignKey (on_delete=django.db.models.deletion. CASCADE, to='sellers.seller')),
],
),
]
Pokaždé, když provedete novou migraci, složka migrace vygeneruje novou verzi tohoto souboru.
Druhým krokem procesu migrace je konečná migrace modelů. To znamená, že synchronizujete stav databáze s modely.py pomocí migrací, které jste právě vytvořili v souboru 0001_initial.py soubor. Tento proces můžete dokončit (zatímco server stále běží) pomocí následujícího příkazu:
python manage.py migrovat
Co je Django's Template?
Šablony představují způsob, jak dynamicky generovat HTML pro váš projekt Django. Každá šablona Django má .html rozšíření a kombinace statického a dynamického obsahu. Šablony Django mají jedinečnou syntaxi, která zahrnuje nové způsoby vytváření proměnných a značek v dokumentu HTML.
Vytvoření šablony Django
Chcete-li zavést šablony na ukázkovém webu elektronického obchodu pro tento článek, budete muset vytvořit nový adresář v modulu prodejců. Tento nový adresář s názvem „šablony“ bude domovem všech dokumentů HTML pro aplikaci prodejců – počínaje domovskou stránkou.
Soubor sellers_home.html
Prodejci | E-commerce
Vítejte prodejci!
Po vytvoření šablon je budete muset zviditelnit pro Django přidáním adresáře šablon do ŠABLONY sekce settings.py soubor. Aktualizováno ŠABLONY sekce bude vypadat následovně:
ŠABLONY = [
{
'BACKEND': 'django.template.backends.django. DjangoTemplates',
'DIRS': [
# nový kód, který ukazuje na umístění šablon
BASE_DIR / 'prodejci' / 'šablony'
],
'APP_DIRS': Pravda,
'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',
],
},
},
]
Nyní, když Django ví, kde najít šablony pro web, můžete pokračovat a vykreslit je do uživatelského rozhraní pomocí zobrazení.
Jaký je Djangoův pohled?
Pohled je druhá vrstva architektury MVT společnosti Django, šablona je k ničemu, pokud ji pohled nevykreslí do uživatelského rozhraní. Pohled je zodpovědný za přijímání webových požadavků a vracení příslušných odpovědí (včetně šablon). Ve své nejzákladnější podobě je pohled funkcí Pythonu uloženou v view.py soubor vašeho projektu Django.
Vytváření Django View
The view.py soubor je v modulu prodejců ukázkového projektu Django. Když prodejce navštíví váš web, budete chtít, aby přešel na domovskou stránku prodejce. Tuto domovskou stránku vytvoříte pomocí šablony HTML, podobně jako ta vytvořená v sekci šablon výše.
Soubor view.py
z django.shortcuts import render
def index (požadavek):
vrátit vykreslení (požadavek, 'sellers_home.html')
Výše uvedený pohled vezme požadavek a vrátí HTML šablonu prodejce. Takže pokaždé, když uživatel navštíví (nebo požádá) http://127.0.0.1:8000/sellers/ uvidí domovskou stránku prodejce. To je poté, co vytvoříte a urls.py soubor v modulu prodejců.
Soubor Sellers urls.py
z cesty importu django.urls
z. importovat pohledy
urlpatterns = [
path('', views.index, name='index'),
]
A uveďte cestu k modulu prodejců urls.py soubor v urls.py soubor umístěný v hlavním adresáři Django.
Soubor webových stránek urls.py
z django.contrib import admin
z django.urls import include, path
urlpatterns = [
path('sellers/', include('sellers.urls')),
cesta('admin/', admin.site.urls),
]
Nyní, když je zobrazení nastaveno, můžete se ujistit, že server Django stále běží a přejít na něj http://127.0.0.1:8000/sellers/ ve vašem prohlížeči, abyste viděli domovskou stránku prodejce.
Domovská stránka prodejců
Django’s MVT Architecture vs. Architektura MVC
Architektura MVT společnosti Django je zcela odlišná od populární architektury MVC.
Sekce šablony architektury MVT funguje v podstatě stejným způsobem jako pohled v architektuře MVC, zatímco pohled v architektuře MVT zobrazuje vlastnosti, které jsou podobné kontroleru v MVC architektura. Modely v obou architekturách však fungují identicky.
Aplikujte principy návrhu Model-View-Controller na své vlastní programy pro okamžité výsledky. Zde je návod, jak začít.
Přečtěte si další
- Programování
- Programování
- Krajta
Kadeisha Kean je vývojář úplného softwaru a technický/technologický autor. Má výraznou schopnost zjednodušit některé z nejsložitějších technologických konceptů; vyrábí materiál, který může snadno pochopit každý technologický nováček. Je nadšená psaním, vývojem zajímavého softwaru a cestováním po světě (prostřednictvím dokumentů).
Přihlaste se k odběru našeho newsletteru
Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné e-knihy a exkluzivní nabídky!
Chcete-li se přihlásit k odběru, klikněte sem