Django - pokročilé formuláře

Obsah
Vytváření formulářů může být mnohem jednodušší pomocí generické třídy z Django ne vždy je však použijeme, protože někdy potřebujeme vyvinout úplnou logiku z naší strany.
Naštěstí uvnitř Django Můžeme také vytvořit způsob, jakým budeme zpracovávat naše formuláře a jak spravovat jejich logiku, čímž dosáhneme mnohem více přizpůsobených aplikací a blíže našim cílům.
Spojení dat s formulářem
Víme, že formulář je způsob odběru dat od uživatele, proto máme dva stavy, s daty i bez datKdyž formulář obsahuje data, je to, když se chystáme provádět naše operace, na druhé straně, když nemá nic, musíme jej pro zpracování dat jednoduše ignorovat.
CvičeníNásledující cvičení provedeme z interaktivní konzoly aplikace Django, vytvoříme formulář a pomocí metoda is_bound () Ověříme, zda má přidružená data, tímto způsobem můžeme trochu více vidět, jak se formulář chová v rámci, podívejme se na výsledky na obrázku níže:

Jak vidíme v příkladu, pouze když předáme hodnoty do formuláře při použití metody is_bound, získáme Pravdivá odpověď.
Ověřit data
Jak víme, pokud pracujeme na webu, data zadaná uživatelem mohou být nejefektivnější formou útoku proti naší aplikaci, protože kvůli neznalosti může zadávat jakýkoli typ formátů, které naše aplikace není připravena přijmout a proto může skončit fatální chybou, abychom se tomu vyhnuli, musíme se před zpracováním vždy ujistit, že jsou data v bezpečí, můžeme použít následující:
 def my_view (požadavek): if request.method == 'POST': form = MyForm (request.POST, request.FILES) if form.is_valid (): #Pokud jsou zde data platná, můžeme pokračovat v naší aplikační logice jinak : # Jinak objekt prezentujeme pouze bez datového formuláře = MyForm ()

Jak vidíme v příkladu, vytvoříme instanci třídy MyForm a připojujeme data, která přicházejí do souboru žádost, metodou POST a těmi typu SOUBORY V případě, že přineseme obrázek nebo soubor jiného typu, v závislosti na našem modelu je třeba vyhodnotit, co naše forma přináší, k tomu použijeme metoda is_valid ()Tímto zajistíme, že pokud řetězec přijde tam, kde by mělo přijít číslo, informace budou odmítnuty a nebude povoleno dosáhnout databáze, kde by mohlo dojít k závažné chybě.
Pohledy založené na třídě
S tím, co jsme viděli v předchozím příkladu, nyní vidíme, jak můžeme něco podobného použít pomocí Pohledy založené na třídě a tímto způsobem používat rámcové nástroje.
Pokud použijeme FormView generické pro Django můžeme dosáhnout něčeho podobného následujícímu kódu:
 z Django.shortcuts import render, přesměrování z Django.views.generic.edit import FormView třída MyForm (FormView): form_class = MyForm template_name = 'form.html' success_url = ' / success /' def form_valid (self, form): form .save () return super (MyView, self) .form_valid (formulář)

Jak vidíme, pokročilé používání formulářů nám umožňuje dělat aplikace dynamičtějšími a přizpůsobenějšími, díky čemuž můžeme dosáhnout neuvěřitelných výsledků pomocí několika řádků kódu.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
wave wave wave wave wave