Späť na blog

Vytváranie Django modelov: Tutoriál

Vytváranie Django modelov: Tutoriál

Django je známy webový framework na rýchly vývoj bezpečných a udržiavateľných webových stránok a webových aplikácií. Postavený pomocou Python, Django zjednodušuje vývoj webu, čo umožňuje venovať viac času a pozornosti písaniu aplikácií bez toho, aby ste museli zakaždým znova vymýšľať koleso. Django je bezplatný a open-source projekt s robustnou oficiálnou dokumentáciou, skvelou podporou komunity a množstvom bezplatnej aj platenej podpory.

V tomto návode sa ponoríme do vytvárania modelov Django. V Django je model kľúčovým zdrojom informácií o vašich dátach. Modely popisujú polia a správanie dát, ktoré sa majú uložiť. Django používa model na generovanie databázových tabuliek pomocou ORM (Object Relational Mapping), ktoré sa tiež označujú ako modely.

Požiadavky

Pracujeme na operačnom systéme založenom na Unixe, najlepšie na cloudovom serveri Ubuntu 20.04 ako na systéme, na ktorom sme to testovali. Ak chcete nastaviť Django v podobnom prostredí, prečítajte si náš návod „Ako nainštalovať Django a nastaviť vývojové prostredie na Ubuntu 20.04.”

Krok 1. Vývojové prostredie Python

Django je postavený na Pythone. Potrebujeme teda robustné vývojové prostredie Python so všetkými nástrojmi potrebnými na prácu s aplikáciami v Pythone. Už sme o tom hovorili v venovanom návode. Tu si ukážeme krátku ukážku.

Najprv spustite terminál a zadajte nasledujúce príkazy:

Ďalej nainštalujte pip – správcu balíkov pre Python:

Potom nainštalujte niekoľko ďalších vývojových balíkov:

Django Models 1

Na vytvorenie virtuálneho prostredia potrebujeme aj Python venv modul:

Krok 2. Inštalácia MySQL Servera

MySQL je populárny relačný systém riadenia databáz. Je open-source, stabilný a bohatý na funkcie. Použijeme MySQL ako databázový server pre našu aplikáciu Django. Nainštalujte MySQL pomocou APT:

Ďalej overte inštaláciu:

Django Models 2

Ide len o základné nastavenie MySQL s predvolenými možnosťami. Pozrite si podrobnejší návod na inštaláciu a konfiguráciu MySQL.

Krok 3. Nastavenie aplikácie Django

Teraz sme pripravení vytvoriť našu aplikáciu Django. Ak máte záujem o ďalšiu podrobnú ukážku Django, prečítajte si náš návod „Inštalácia webového frameworku Django na Ubuntu 20.04.”

Ďalej vytvorte vyhradený adresár pre aplikáciu. Názov adresára by mal odrážať názov projektu:

V adresári projektu vytvorte virtuálne prostredie Python pomocou modulu venv:

Aktivujte virtuálne prostredie:

Django Models 3

Nainštalujte Django pomocou pip:

Ďalej vytvorte nový projekt Django pomocou príkazu django-admin:

django-admin

Krok 4. Konfigurácia aplikácie Django

Aplikácia Django obsahuje všetky predvolené konfigurácie. Pre náš cieľ musíme vykonať niekoľko úprav.

Začnite úpravou konfiguračného súboru settings.py:

Potom zmeňte časové pásmo:

TIME_ZONE

Pridajte stroje, ktoré majú povolený prístup k serveru aplikácie Django:

ALLOWED_HOSTS

Potom aplikujte zmeny:

Django Models 4

Nakoniec vytvorte superpoužívateľa pre našu webovú aplikáciu Django:

python manage.py

Krok 5. Pripojenie aplikácie Django k MySQL

Na pripojenie k MySQL potrebujeme dodatočnú knižnicu konektora Python, ktorá je kompatibilná s Django. Budeme používať mysqlclient.

Najprv sa uistite, že máme nainštalované potrebné balíky:

python3-dev

Ďalej nainštalujte mysqlclient:

  • Vytvorenie vyhradenej databázy

Pre našu aplikáciu musíme vytvoriť vyhradenú databázu a databázového používateľa. Spustite MySQL shell ako root:

sudo mysql -u rootVytvorte vyhradenú databázu pre našu aplikáciu Django:

Potom vytvorte vyhradeného databázového používateľa pre aplikáciu Django:

Nakoniec udeľte vyhradenému používateľovi plné oprávnenia k vyhradenej databáze:

GRANT ALL ON
  • Zmena konfigurácie Django na používanie MySQL

Teraz musíme upraviť niektoré konfigurácie Django, aby mohlo používať MySQL ako databázový server. Otvorte settings.py v textovom editore:

Prejdite nadol na sekciu DATABASES a vložte nasledujúci kód:

DATABASES

Ďalej upravte konfiguračný súbor MySQL tak, aby obsahoval potrebné prihlasovacie údaje k databáze:

Na koniec súboru pridajte nasledujúci blok:

Django Models 5

Reštartujte MySQL, aby sa zmeny prejavili:

Krok 6. Vytvorenie modelu Django

Teraz sme pripravení vytvoriť nový model v našom projekte Django. Aktivujte virtuálne prostredie:

V tomto umiestnení povedzte Djangu, aby vytvorilo novú aplikáciu:

Po vytvorení by mal strom súborov vyzerať nejako takto. Tu bude súbor models.py obsahovať kódy pre náš vlastný model Django:

Django Models 6

Skontrolujte aktuálny obsah súboru:

cat models.py

Na ukážku vytvoríme model pre blogové príspevky s názvom Post. Bude obsahovať nasledujúce polia:

  • title: Názov blogového príspevku.
  • slug: Ukladá a generuje platné URL adresy pre webové stránky.
  • content: Text blogového príspevku.
  • created_on: Dátum vytvorenia príspevku.
  • author: Používateľ, ktorý príspevok vytvoril.

Otvorte súbor models.py v textovom editore:

Importujme niektoré potrebné API pre náš model. V predvolenom nastavení importuje API models. Budeme tiež potrebovať slugify API na generovanie slugov, User pre autentifikáciu a reverse pre lepšie a flexibilnejšie vytváranie URL adries:

Ďalej pridajte metódu triedy s názvom Post. Bude obsahovať potrebné databázové polia ako title, slug, content, created_on, a author:

Potrebujeme funkciu na generovanie URL a ukladanie príspevku. Je to dôležité, pretože to generuje unikátne odkazy zodpovedajúce unikátnym príspevkom:

Nasledujúca časť povie modelu, ako zoradiť príspevky a zobraziť ich na webovej stránke. Túto logiku zakódujeme pomocou vnútornej triedy, Meta. Bude obsahovať dodatočnú logiku modelu, ktorá sa netýka definície databázových polí:

Nakoniec budeme mať funkciu modelu Comment v tomto súbore. Vyžaduje to pridanie ďalšej triedy Comment s použitím models.Model ako jej signatúry. Bude obsahovať nasledujúce databázové polia:

  • name: Meno komentujúceho.
  • email: E-mailová adresa komentujúceho.
  • text: Samotný obsah komentára.
  • post: Príspevok, ku ktorému bol komentár pridaný.
  • created_on: Čas vytvorenia komentára.

Kód bude vyzerať približne takto:

V tomto bode bude náš súbor models.py vyzerať takto:

models.py

Nakoniec súbor uložte a zatvorte editor.

Krok 7. Aktualizácia nastavení Django

Model je vytvorený. Musíme však upraviť niektoré konfiguračné súbory, aby sme model uviedli do prevádzky. Vnútri settings.py, musíme pridať náš model pod INSTALLED_APPS.

Otvorte settings.py v textovom editore:

Zaregistrujte nový modul v sekcii INSTALLED_APPS:

INSTALLED_APPS

Uložte súbor a zatvorte editor.

Krok 8. Migrácia zmien

Teraz, keď sme pridali všetky požadované modely, ďalším krokom je aplikovanie týchto zmien. Django aplikuje tieto schémy na našu MySQL databázu.

Nasledujúci príkaz vygeneruje všetky potrebné migračné súbory. Výstup zobrazí umiestnenie všetkých týchto súborov v adresári projektu:

makemigrations

Nasledujúci príkaz zobrazí zoznam všetkých existujúcich migrácií:

Django Models 6

Upozorňujeme, že všetky migrácie sú označené okrem 0001_initial ktorá bola vytvorená ako súčasť modelov Post a Comment.

Nasledujúci príkaz ukáže, aký SQL dopyt Django vykoná na uskutočnenie migrácií:

sample_app

Teraz už len musíme aplikovať migrácie. Tieto migrácie zapíšu zmeny do databázy:

migrate

Krok 9. Overenie zmien

Ak chcete overiť zmeny, pozrime sa na našu databázu MySQL. Spustite MySQL shell ako používateľ Django:

Ďalej zmeňte aktuálnu aktívnu databázu na databázu aplikácie Django:

Vypíšte všetky tabuľky z databázy:

Na záver, ak chcete vidieť obsah ktorejkoľvek z tabuliek, použite DESCRIBE dopyt:

Django Models 7

Obmedzenia Django s MySQL

Pri používaní MySQL ako databázového servera pre vašu aplikáciu Django je potrebné mať na pamäti niekoľko vecí:

  • Podpora transakcií pri procesoch meniacich schému je obmedzená. To znamená, že ak migrácia zlyhá, vyžaduje si to manuálne vrátenie všetkých zmien pred pokusom o ďalšiu migráciu. Neexistuje spôsob, ako sa vrátiť do predchádzajúceho stavu, kedy k zlyhanej migrácii nedošlo.
  • Pri väčšine procesov meniacich schému MySQL úplne prepisuje tabuľky. V určitých situáciách to môže byť naozaj časovo náročné. V najhoršom prípade bude časová náročnosť úmerná počtu pridávaných riadkov alebo odstraňovaných stĺpcov. Podľa oficiálnej dokumentácie Django to môže trvať jednu minútu na milión riadkov.
  • MySQL uplatňuje limit znakov pre dĺžku názvov stĺpcov, tabuliek a indexov. Existuje tiež limit na celkovú veľkosť všetkých stĺpcov a pokrytí indexov. Django môže tieto limity prekročiť. Niektoré iné backendy ako MySQL dokážu zvládnuť vyšší limit Django.

Preto sa dôrazne odporúča zvážiť vaše možnosti a vybrať si tú najvhodnejšiu.

Záverečné myšlienky

Tento návod úspešne demonštruje, ako pridať moduly do existujúcej aplikácie Django. Ako backend pre aplikáciu sme použili MySQL. Ukazuje tiež niektoré kľúčové koncepty Django, ako sú modely, ako funguje migrácia a ako Django prekladá modely do databázových tabuliek MySQL.

Príjemné programovanie!

author

Hark Labs

Autor · CloudSigma

Preslav Dobrev je kreatívny dizajnér v spoločnosti CloudSigma, ktorý sa zameriava na konzistentnú firemnú identitu prostredníctvom tradičných a inovatívnych marketingových kanálov. Dokáže brilantne spájať umeleckú víziu so strategickým marketingom, čím vytvára pôsobivé príbehy značky.

Komentáre

Zatiaľ žiadne komentáre. Buďte prvý.