Obsah
Django zpracovává deklarativní způsob nastavení tříd, které bude používat, to znamená, že z něj můžeme vytvářet modely metaklasy již definované, pomocí kterého můžeme získat základní a pokročilé funkce pouhým vytvořením vlastní třídy, a to díky všem nástrojům začleněným do rámec.Jedním z bodů, které nám možná zůstávají, je to, jak poznat, způsob, jakým rámec věci dělá, tedy v jakém pořadí deklaruje atributy, které do tříd umisťujeme.
Třídění atributů třídy
Když použijeme deklarativní syntaxi, ve které máme k dispozici Django, může dojít k záměně a toto je pořadí, ve kterém jsou přiřazeny deklarované hodnoty, důvodem je to, že Krajta zachází se svými slovníky nepořádně; Normálně by to nepředstavovalo zásadní problém, nicméně při manipulaci s obory názvů nebo obory názvů, pokud potřebujeme provést konkrétní iteraci atributů, je důležité znát pořadí, ve kterém byly hodnoty přiřazeny, protože bychom neměli překážka.
Abychom měli plnou kontrolu nad naší aplikací, můžeme nějak vědět, v jakém pořadí jsou hodnoty přiřazeny, čímž se vyhneme nutnosti přiřazovat libovolné pořadí.
Abychom dosáhli tohoto uspořádání, můžeme udělat to, že každý atribut nese sám o sobě stopu své pozice v pořadí, proto musíme své třídy nechat dědit ze základní třídy, která dokáže spočítat, kolikrát je třída instancována, a tak přiřadit korelační číslo pro každého z nich:
třída BaseAttribute (objekt): creation_counter = 1 def __init __ (self): self.creation_counter = BaseAttribute.creation_counter BaseAttribute.creation_counter + = 1
V příkladu kódu vidíme následující:
Každý případ Objekt mít jmenný prostor nebo jiný obor názvů než třídy, takže každá z instancí této třídy bude mít čítač vytváření, který můžeme použít k třídění objektů podle pořadí, v jakém byly vytvořeny.
To nemusí být jediné řešení nastoleného problému, ale je to způsob, jakým Django třídí pole pro modely a formuláře.
Jak vidíme, problém byl jen ukázkou toho, jak Django jako rámec zpracovává třídy a jejich obsah pomocí prostředků Pythonu.
Třídní prohlášení
Se všemi třídami, které máme v modulu, je vytvoření aplikační třídy stejně jednoduché jako definování podtřídy a přidání jejích atributů.
Různé existující rámce budou mít různá jména pro atributy třídy a dokonce budou mít různé požadavky na to, jak jsou třídy vyžadovány, nebo na formu a kombinace, ve kterých musí být použity, což může dosáhnout bodu s vyhrazenými názvy, které by mohly způsobit konflikty, pokud je vytvořen atribut s tímto názvem. Tyto problémy jsou vzácné, protože správnou praxí se musíme tomuto typu situací při vývoji nového rámce vyhnout; obecným pravidlem je poskytnout vývojářům maximální možnou flexibilitu, čímž docílíme toho, že rámec nebude překážkou místo pomoci.
Na následujícím obrázku uvidíme, jak je třída deklarována Kontakt v aplikaci v Django:
ZVĚTŠIT
S tímto jednoduchým kódem nám stačí umožnit frameworku přenášet do našeho modelu velké množství funkcí, aniž bychom museli nutit vývojáře, aby je musel ručně přidávat.Další věc, kterou si pamatujete, je, že se jedná o kód Krajta, takže bychom se neměli cítit omezeni, protože prakticky jakýkoli platný kód v Pythonu nám pomůže rozšířit naše třídy.Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod