Natrag na blog

Kreiranje Django modela: Vodič

Kreiranje Django modela: Vodič

Django je poznati web okvir za brzi razvoj sigurnih web stranica i web aplikacija koje se lako održavaju. Izgrađen pomoću Python, Django pojednostavljuje web razvoj, omogućujući više vremena i fokusa na pisanje aplikacija bez ponovnog izmišljanja kotača svaki put. Django je besplatan projekt otvorenog koda s robusnom službenom dokumentacijom, izvrsnom podrškom zajednice i mnoštvom besplatne i plaćene podrške.

U ovom vodiču, uronit ćemo u stvaranje Django modela. U Djangu, a model je ključni izvor informacija o vašim podacima. Modeli opisuju polja i ponašanje podataka koji se pohranjuju. Django koristi model za generiranje tablica baze podataka pomoću ORM-a (Object Relational Mapping), koji se također nazivaju modeli.

Preduvjeti

Radimo na operacijskom sustavu baziranom na Unixu, po mogućnosti na Ubuntu 20.04 cloud poslužitelju kao sustavu na kojem smo testirali. Ako želite postaviti Django u sličnom okruženju, pogledajte naš vodič, „Kako instalirati Django i postaviti razvojno okruženje na Ubuntu 20.04.”

Korak 1. Python razvojno okruženje

Django je izgrađen na Pythonu. Dakle, trebamo robusno Python razvojno okruženje sa svim potrebnim alatima za rad s Python aplikacijama. O tome smo već raspravljali u namjenskom vodiču. Ovdje ćemo imati kratku demonstraciju.

Prvo pokrenite terminal i pokrenite sljedeće naredbe:

Zatim instalirajte pip – upravitelj Python paketa:

Zatim instalirajte neke dodatne razvojne pakete:

Django Models 1

Za uspostavljanje virtualnog okruženja također nam je potreban Pythonov venv modul:

Korak 2. Instalacija MySQL poslužitelja

MySQL je popularan sustav za upravljanje relacijskim bazama podataka. Otvorenog je koda, stabilan i bogat značajkama. Koristit ćemo MySQL kao poslužitelj baze podataka za našu Django aplikaciju. Instalirajte MySQL pomoću APT-a:

Zatim provjerite instalaciju:

Django Models 2

To je samo osnovna konfiguracija MySQL-a sa zadanim opcijama. Pogledajte detaljniji vodič o instalaciji i konfiguraciji MySQL-a.

Korak 3. Postavljanje Django aplikacije

Sada smo spremni za stvaranje naše Django aplikacije. Ako ste zainteresirani za daljnju detaljnu demonstraciju Djanga, pogledajte naš vodič, „Instalacija Django web okvira na Ubuntu 20.04.”

Zatim stvorite namjenski direktorij za aplikaciju. Naziv direktorija trebao bi odražavati naziv projekta:

Unutar direktorija projekta stvorite Python virtualno okruženje pomoću venv modula:

Aktivirajte virtualno okruženje:

Django Models 3

Instalirajte Django pomoću pip:

Zatim stvorite novi Django projekt pomoću django-admin naredbe:

django-admin

Korak 4. Konfiguriranje Django aplikacije

Django aplikacija sadrži sve zadane konfiguracije. Za naš cilj moramo napraviti neke prilagodbe.

Započnite uređivanjem konfiguracijske datoteke settings.py:

Zatim promijenite vremensku zonu:

TIME_ZONE

Dodajte strojeve kojima je dopušten pristup poslužitelju Django aplikacije:

ALLOWED_HOSTS

Nakon toga primijenite promjene:

Django Models 4

Na kraju, stvorite superkorisnika za našu Django web aplikaciju:

python manage.py

Korak 5. Povezivanje Django aplikacije s MySQL-om

Za povezivanje s MySQL-om, potrebna nam je dodatna Python biblioteka konektora koja je kompatibilna s Djangom. Koristit ćemo mysqlclient.

Prvo provjerite imamo li instalirane potrebne pakete:

python3-dev

Zatim instalirajte mysqlclient:

  • Stvaranje namjenske baze podataka

Za našu aplikaciju moramo stvoriti namjensku bazu podataka i korisnika baze podataka. Pokrenite MySQL ljusku kao root:

sudo mysql -u rootStvorite namjensku bazu podataka za našu Django aplikaciju:

Zatim stvorite namjenskog korisnika baze podataka za Django aplikaciju:

Na kraju, dodijelite namjenskom korisniku sve ovlasti na namjenskoj bazi podataka:

GRANT ALL ON
  • Promjena Django konfiguracije za korištenje MySQL-a

Sada moramo prilagoditi neke Django konfiguracije kako bi mogao koristiti MySQL kao poslužitelj baze podataka. Otvorite settings.py u uređivaču teksta:

Pomaknite se dolje do odjeljka DATABASES i zalijepite sljedeći kod:

DATABASES

Zatim uredite MySQL konfiguracijsku datoteku tako da sadrži potrebne vjerodajnice baze podataka:

Dodajte sljedeći blok na kraj datoteke:

Django Models 5

Ponovno pokrenite MySQL kako bi promjene stupile na snagu:

Korak 6. Stvaranje Django modela

Sada smo spremni stvoriti novi model unutar našeg Django projekta. Aktivirajte virtualno okruženje:

Na ovoj lokaciji, recite Djangu da stvori novu aplikaciju:

Nakon stvaranja, stablo datoteka trebalo bi izgledati otprilike ovako. Ovdje će datoteka models.py sadržavati kodove za naš prilagođeni Django model:

Django Models 6

Provjerite trenutni sadržaj datoteke:

cat models.py

Za demonstraciju, stvorit ćemo model za objave na blogu pod nazivom Post. Sadržavat će sljedeća polja:

  • title: Naslov objave na blogu.
  • slug: Pohranjuje i generira valjane URL-ove za web stranice.
  • content: Tekst objave na blogu.
  • created_on: Datum stvaranja objave.
  • author: Korisnik koji je stvorio objavu.

Otvorite datoteku models.py u uređivaču teksta:

Uvezimo neke potrebne API-je za naš model. Prema zadanim postavkama, uvozi se models API. Također će nam trebati slugify API za generiranje slugova, User za autentifikaciju i reverse za bolje i fleksibilnije stvaranje URL-ova:

Zatim dodajte metodu klase pod nazivom Post. Sadržavat će potrebna polja baze podataka kao što su title, slug, content, created_on, i author:

Trebamo funkcionalnost za generiranje URL-a i spremanje objave. To je važno jer generira jedinstvene poveznice koje odgovaraju jedinstvenim objavama:

Sljedeći odjeljak će modelu reći kako poredati objave i prikazati ih na web stranici. Kodirat ćemo logiku koristeći unutarnju klasu, Meta. Sadržat će dodatnu logiku modela koja se ne tiče definicije polja baze podataka:

Naposljetku, imat ćemo značajku Comment modela u ovoj datoteci. Zahtijeva dodavanje još jedne klase Comment koristeći models.Model kao njezin potpis. Sadržat će sljedeća polja baze podataka:

  • name: Ime komentatora.
  • email: E-adresa komentatora.
  • text: Sadržaj samog komentara.
  • post: Objava na kojoj je komentar ostavljen.
  • created_on: Vrijeme stvaranja komentara.

Kod će izgledati otprilike ovako:

U ovom trenutku, naša models.py datoteka će izgledati ovako:

models.py

Na kraju, spremite datoteku i zatvorite uređivač.

Korak 7. Ažuriranje Django postavki

Model je stvoren. Međutim, moramo prilagoditi neke konfiguracijske datoteke kako bismo model stavili u funkciju. Unutar settings.py, moramo dodati naš model pod INSTALLED_APPS.

Otvorite settings.py u uređivaču teksta:

Registrirajte novi modul pod odjeljkom INSTALLED_APPS:

INSTALLED_APPS

Spremite datoteku i zatvorite uređivač.

Korak 8. Migracija promjena

Sada kada smo dodali sve željene modele, sljedeći korak je primjena tih promjena. Django će primijeniti ove sheme na našu MySQL bazu podataka.

Sljedeća naredba generirat će sve potrebne migracijske datoteke. Izlaz će prikazati lokacije svih tih datoteka unutar direktorija projekta:

makemigrations

Sljedeća naredba izlistat će sve postojeće migracije:

Django Models 6

Imajte na umu da su sve migracije označene osim 0001_initial koja je stvorena kao dio modela Post i Comment.

Sljedeća naredba prikazat će koji će SQL upit Django izvršiti za provođenje migracija:

sample_app

Sve što sada trebamo je primijeniti migracije. Ove migracije će zapisati promjene u bazu podataka:

migrate

Step 9. Verifying Changes

To verify the changes, let’s have a look at our MySQL database. Start the MySQL shell as the Django user:

Next, change the current active database to the Django app database:

List all the tables from the database:

Lastly, to see the content of any of the tables, use the DESCRIBE query:

Django Models 7

Django Limitations with MySQL

When using MySQL as the database server for your Django app, there are a few things to keep in mind:

  • There’s not much support for transactions around schema-altering processes. Meaning, if a migration fails, it requires manually unpicking all the changes before trying another migration. There’s no way to roll back to an earlier point when the failed migration didn’t take place.
  • For most of the schema-altering processes, MySQL completely rewrites tables. In certain situations, it can be really time-consuming. At worst, the time complexity will be proportional to the number of rows to be added or columns to be removed. According to the official Django documentation, it could take one minute per million rows.
  • MySQL enforces a character limit for the name lengths of columns, tables, and indices. There’s also a limit on the total size of all columns and index covers. Django can go higher than the limit. Some backends other than MySQL can handle the higher limit of Django.

That’s why it’s strongly recommended to weigh your options and choose the appropriate one.

Final Thoughts

This guide successfully demonstrates how to add modules to an existing Django app. We used MySQL as the backend for the app. It also showcases some key Django concepts like models, how migration works, and how Django translates models into MySQL database tables.

Happy Computing!

author

Hark Labs

Autor · CloudSigma

Preslav Dobrev je kreativni dizajner u CloudSigma, usredotočen na dosljedan poslovni identitet korištenjem tradicionalnih i inovativnih marketinških kanala. Vješt je u spajanju umjetničke vizije sa strateškim marketingom kako bi stvorio dojmljive brendirane priče.

Komentari

Još nema komentara. Budite prvi.