na pozadí
Validace a konverze dat.
Problém sanitace údajů (kontrola správnosti a transformovat do užitečné formě) je rozšířený po celém programování:
- Jak mohu ověřit vstup uživatele je správná?
- Jak mohu Munge data z tabulky do data a čísla?
- Jak mohu přeměnit syrové databázových polí do programový objekt?
Ian Bicking přišel s rozumnou idiomu tohoto problému, ztělesněný v jeho Formencode knihovně [formencode]: validace a konverze jsou jedno a totéž, a mohou být řešeny vedením prvotních dat prostřednictvím řetězce validátory. Každý kontroly Validator a / nebo transformuje a předá k dalšímu.
V tomto duchu, konval je balíček, který obsahuje:
- Bohatá knihovna ověřovacích objektů
- základní třídy pro snadné výrobu vlastních validátory
- Funkce pro snadné použití validátory v různými způsoby
Status
konval je v průzkumném stavu, které byly vyrobeny na podporu další balíček, a uvidíme, jestli může být používání vystoupil z zobecnění konverzi. Jako takový. to je ještě předčasné propuštění a API může změnit. Komentář je pozván.
Instalace
Nejjednodušší způsob, jak nainstalovat konval je přes easy_install [setuptools] nebo rovnocenný programu:
easy_install konval
Alternativně archiv lze stáhnout, vybalili a setup.py běh:
tar zxvf konval.tgz
& Nbsp; CD konval
& Nbsp; python set.py nainstalovat
konval je modul, který nemá žádné předpoklady a měl by pracovat s téměř jakoukoliv verzi Pythonu.
Používání konval
Plná API je v distribuci zdroje.
Příklady
Nejčastěji se konval být použity pro kontrolu nebo čištění hodnoty. Poruchy mít za následek výjimky být hozen:
# Převést vstup uživatele na skutečné celé číslo
>>> Z konval import *
>>> Dezinfikovat ("1.0", ToInt ())
1
>>> Dezinfikovat ("jeden", ToInt ())
Traceback (poslední hovor poslední)
...
ValueError: nelze převést "1,0" na celé číslo
Jeden validátor nebo seznamu mohou být předány k dezinfekci. Neúspěch v kterékoliv bude mít za následek jakékoliv výjimky:
# Zkontrolovat seznam nemá více než 3 členy
>>> Dezinfikovat (['', 'b', 'c'], [ToLength (), IsEqualOrLess (3)])
3
# Zkontrolujte heslo je dostatečně dlouhá,
>>> Dezinfikovat ("mypass", [ToLength (), IsEqualOrMore (8)])
Traceback (poslední hovor poslední)
...
ValueError: 6 je nižší než 8
Jakýkoliv objekt, který přijímá volatelná a vrátí jednu hodnotu může být použit jako validátor:
>>> Z řetězce import *
>>> Dezinfikovat ("můj titul", [proužek, kapitalizovat])
"Můj název"
Bohatá knihovna předem vytvořených validátory se dodává:
>>> Dezinfikovat ("abcde", IsNonblank ())
"ABCDE"
>>> Dezinfikovat (5, IsInRange (1,6))
5
>>> Dezinfikovat ("foo", Synonyma ({'foo': 'bar', 'baz': 'quux'}))
"Bar"
Vlastní validátory lze snadno podtřídou z dodaného základní třídy:
třída IsFoo (BaseValidator):
& Nbsp; def validate_value (self, hodnota):
! & Nbsp; pokud hodnota = 'foo':
& Nbsp; self.raise_validation_error (hodnota)
& Nbsp; vrátit true
Co je nového v této verzi:
- přejmenovali několik validátory na více konzistentní schéma. Jména by nyní měla být stanovena.
Požadavky na :
- Python
Omezení :
- konval je zaměřen na jednosměrné transformace dat, otáčení uživatelského vstupu nebo ukládají Údaje do Pythonu objekty. Jistě by mohl být použit v opačném směru, ale to není primární použití případ. FormEncode je založen na dvou-způsobem (zpáteční) konverzi dat, takže může být užitečnou alternativou.
- byl vybrán název konval, protože:
- tam je už knihovna Python s názvem & quot; rozum & quot;
- z & quot; Valcon & quot ;, & quot; valkon & quot ;, & quot; conval & quot; atd. to byl ten s nejmenším počtem zobrazení Google
Komentáře nebyl nalezen