Sadržaj
U Django klase su objekti Piton, Kao i svaki drugi objekt, možemo postići mnoge zanimljive učinke u vrijeme izvođenja programa, zahvaljujući činjenici da imamo sve Python funkcije i metode dostupno u Djangu možemo izgraditi klase koje mogu generirati dinamičke klase.Stvaranje dinamičke klase može nam pružiti neke prednosti, poput stvaranja modela iz klase, čime se stvaraju nove funkcionalnosti.
Kako nastava funkcionira u okviru?
Kako bismo došli do točke generiranja dinamičkih modela, prvo se moramo pobrinuti da razumijemo kako klase rade u Pythonu.
Znamo da nastava u Piton su objekti koji se mogu stvoriti za vrijeme izvođenja korištenjem unutarnjeg konstruktora vrsta () i primanje pojedinosti o tome kako ih treba definirati.
Modeli u Djangu
Budući da znamo kako nastava funkcionira u Pythonu, moramo naglasiti da je modeli u Djangu to su standardne klase Python, samo što su deklarirane na taj način Django možete ih koristiti i da su standardne klase omogućuje nam generiranje modela za vrijeme izvođenja.
Prva implementacija
Pogledajmo sljedeću sliku s malim kodom:
Ovdje vidimo kako se Django okvir Uvozimo modul modela, zatim stvaramo metodu za stvaranje modela s tip konstruktora () koje smo spomenuli u prethodnoj točki vodiča.
Međutim, ovaj pojednostavljeni pristup koji smo primijenili očito neće uspjeti, problem je u tome što Django očekuje da rječnik uključuje modul sa svojim kodom.
Pogledajmo sada kod kojim rješavamo ovaj problem:
def create_model (name, module_path): povratni tip (name, (models.Model,), {'__module__': module_path})
Ovom implementacijom eliminirali smo prvu pogrešku koja je iskrsla s prvim primjerom.
Dodajte mogućnosti konfiguracije
Dovršit ćemo naš kôd za generiranje dinamičkih modela, uključujući mogućnost da možemo uključiti opcije za django konfiguracija, za to ćemo koristiti Meta razred i prebrisat ćemo njegov rad tako da nam nova implementacija omogućuje redefiniranje načina na koji ćemo postupati s opcijama, pogledajmo na sljedećoj slici kod koji je već dovršen kako bi se to postiglo:
U ovom smo kodu jasno promijenili neke aspekte našeg početnog koda, počinjemo definiranjem da je putanja modula: Django.db.modeli, odavde ćemo dobiti početne definicije, jednom kad se to dogodi stvorimo rječnik kojem ga dodjeljujemo __modul__ vrijednost puta koji smo definirali.
Zatim ponovno obrađujemo klasu Meta, čime spremamo moguće probleme o kojima smo razgovarali na početku ove točke, konačno možemo nazvati naš metoda type (), prosljeđivanje potrebnih podataka, a ne pogreška.
S ovim novim znanjem koje smo generirali, već imamo čvrstu bazu s kojom možemo komunicirati s kodom Django na sigurniji način, što nas stavlja u povoljan položaj za razvoj naših aplikacija i generiranje modela dinamički u vremenu izvršavanja našeg programa.Je li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod