ValiderareLink to this heading
Skriva validatorerLink to this heading
En validator är en anropsbar som tar ett värde och skapar ett ValidationError om det inte uppfyller vissa kriterier. Validerare kan vara användbara för att återanvända valideringslogik mellan olika typer av fält.
Här är till exempel en validator som bara tillåter jämna tal:
from django.core.exceptions import ValidationError
from django.utils.translation import gettext_lazy as _
def validate_even(value):
if value % 2 != 0:
raise ValidationError(
_("%(value)s is not an even number"),
params={"value": value},
)
Du kan lägga till detta i ett modellfält via fältets validators argument:
from django.db import models
class MyModel(models.Model):
even_field = models.IntegerField(validators=[validate_even])
Eftersom värden konverteras till Python innan validatorerna körs kan du till och med använda samma validator med formulär:
from django import forms
class MyForm(forms.Form):
even_field = forms.IntegerField(validators=[validate_even])
Du kan också använda en klass med en __call__()-metod för mer komplexa eller konfigurerbara validerare. RegexValidator, till exempel, använder denna teknik. Om en klassbaserad validerare används i modellfältalternativet validators bör du se till att den är serialiserbar av migreringsramverket genom att lägga till deconstruct() och __eq__()-metoder.
Hur validerare körsLink to this heading
Se formulärvalidering för mer information om hur validerare körs i formulär, och Validering av objekt för hur de körs i modeller. Observera att validerare inte kommer att köras automatiskt när du sparar en modell, men om du använder en ModelForm, kommer den att köra dina validerare på alla fält som ingår i ditt formulär. Se ModelForm-dokumentationen för information om hur modellvalidering interagerar med formulär.
Inbyggda validerareLink to this heading
Modulen django.core.validators innehåller en samling anropsbara validatorer för användning med modell- och formulärfält. De används internt men är tillgängliga för användning med dina egna fält också. De kan användas utöver eller i stället för anpassade field.clean()-metoder.
RegexValidatorLink to this heading
- class RegexValidator(regex=None, message=None, code=None, inverse_match=None, flags=0)Link to this definition
- Parametrar:
regex – Om inte
None, åsidosätterregex. Kan vara en sträng med ett reguljärt uttryck eller ett förkompilerat reguljärt uttryck.message – Om inte
None, åsidosättermessage.code – Om inte
None, åsidosättercode.inverse_match – Om inte
None, åsidosätterinverse_match.flags – Om inte
None, åsidosätterflags. I så fall måsteregexvara en sträng med ett reguljärt uttryck, annars uppstårTypeError.
En
RegexValidatorsöker i det angivnavärdetefter ett givet reguljärt uttryck medre.search(). Som standard uppstår ettValidationErrormedmessageochcodeom en matchning inte hittas. Dess beteende kan inverteras genom att sättainverse_matchtillTrue, i vilket fallValidationErrorutlöses när en matchning finns.- regexLink to this definition
Det reguljära uttrycksmönstret som ska sökas efter i det angivna
värdet, medre.search(). Detta kan vara en sträng eller ett förkompilerat reguljärt uttryck skapat medre.compile(). Standardvärdet är den tomma strängen, som kommer att hittas i alla möjligavärden.
- messageLink to this definition
Det felmeddelande som används av
ValidationErrorom valideringen misslyckas. Standardvärdet är"Ange ett giltigt värde".
- codeLink to this definition
Den felkod som används av
ValidationErrorom valideringen misslyckas. Standardvärdet är"invalid".
- inverse_matchLink to this definition
Matchningsläge för
regex. Standardvärdet ärFalse.
EmailValidatorLink to this heading
- class EmailValidator(message=None, code=None, allowlist=None)Link to this definition
- Parametrar:
En
EmailValidatorsäkerställer att ett värde ser ut som ett e-postmeddelande, och ger upphov till ettValidationErrormedmessageochcodeom det inte gör det. Värden som är längre än 320 tecken betraktas alltid som ogiltiga.- messageLink to this definition
Det felmeddelande som används av
ValidationErrorom valideringen misslyckas. Standard är"Ange en giltig e-postadress".
- codeLink to this definition
Den felkod som används av
ValidationErrorom valideringen misslyckas. Standardvärdet är"invalid".
- allowlistLink to this definition
Tillåtlista över e-postdomäner. Som standard används ett reguljärt uttryck (attributet
domain_regex) för att validera allt som visas efter tecknet@. Men om den strängen finns med iallowlist, kringgås denna validering. Om den inte anges är standardvärdet förallowlist['localhost']. Andra domäner som inte innehåller en punkt kommer inte att klara valideringen, så du måste lägga till dem iallowlistvid behov.
DomainNameValidatorLink to this heading
- class DomainNameValidator(accept_idna=True, message=None, code=None)Link to this definition
En
RegexValidator-underklass som säkerställer att ett värde ser ut som ett domännamn. Värden som är längre än 255 tecken betraktas alltid som ogiltiga. IP-adresser accepteras inte som giltiga domännamn.Utöver de valfria argumenten i sin överordnade klass
RegexValidatoraccepterarDomainNameValidatorett extra valfritt attribut:- accept_idnaLink to this definition
Avgör om internationaliserade domännamn ska accepteras, dvs. domännamn som innehåller icke-ASCII-tecken. Standardvärdet är
True.
URLValidatorLink to this heading
- class URLValidator(schemes=None, regex=None, message=None, code=None)Link to this definition
En
RegexValidator-underklass som säkerställer att ett värde ser ut som en URL, och ger felkoden'invalidom det inte gör det. Värden som är längre änmax_lengthtecken betraktas alltid som ogiltiga.Loopback-adresser och reserverade IP-utrymmen betraktas som giltiga. Både bokstavliga IPv6-adresser (RFC 3986 Section 3.2.2) och Unicode-domäner stöds.
Utöver de valfria argumenten i sin överordnade klass
RegexValidatoraccepterarURLValidatorett extra valfritt attribut:- schemesLink to this definition
Lista över URL/URI-scheman att validera mot. Om den inte anges är standardlistan
['http', 'https', 'ftp', 'ftps']. Som referens finns på IANA:s webbplats en fullständig lista över giltiga URI-scheman.
- max_lengthLink to this definition
Den maximala längden på värden som kan anses vara giltiga. Standardvärdet är 2048 tecken.
validera_emailLink to this heading
- validate_emailLink to this definition
En
EmailValidator-instans utan några anpassningar.
validera_domännamnLink to this heading
- validate_domain_nameLink to this definition
En
DomainNameValidator-instans utan några anpassningar.
validera_slugLink to this heading
- validate_slugLink to this definition
En instans av
RegexValidatorsom säkerställer att ett värde endast består av bokstäver, siffror, understreck eller bindestreck.
validera_unicode_slugLink to this heading
- validate_unicode_slugLink to this definition
En instans av
RegexValidatorsom säkerställer att ett värde endast består av Unicode-bokstäver, siffror, understreck eller bindestreck.
validera_ipv4_adressLink to this heading
- validate_ipv4_addressLink to this definition
En
RegexValidator-instans som säkerställer att ett värde ser ut som en IPv4-adress.
validera_ipv6_adressLink to this heading
- validate_ipv6_addressLink to this definition
Använder
django.utils.ipv6för att kontrollera giltigheten för en IPv6-adress.
validera_ipv46_adressLink to this heading
- validate_ipv46_addressLink to this definition
Använder både
validate_ipv4_addressochvalidate_ipv6_addressför att säkerställa att ett värde är antingen en giltig IPv4- eller IPv6-adress.
validera_kommaseparerad_talslistaLink to this heading
- validate_comma_separated_integer_listLink to this definition
En instans av
RegexValidatorsom säkerställer att ett värde är en kommaseparerad lista med heltal.
int_list_validatorLink to this heading
- int_list_validator(sep=',', message=None, code='invalid', allow_negative=False)Link to this definition
Returnerar en instans av
RegexValidatorsom säkerställer att en sträng består av heltal separerade medsep. Den tillåter negativa heltal närallow_negativeärTrue.
MaxValueValidatorLink to this heading
- class MaxValueValidator(limit_value, message=None)Link to this definition
Utlöser ett
ValidationErrormed koden'max_value'omvalueär större änlimit_value, som kan vara en anropbar.
MinValueValidatorLink to this heading
- class MinValueValidator(limit_value, message=None)Link to this definition
Utlöser ett
ValidationErrormed koden'min_value'omvalueär mindre änlimit_value, som kan vara en anropbar.
MaxLengthValidatorLink to this heading
- class MaxLengthValidator(limit_value, message=None)Link to this definition
Utlöser ett
ValidationErrormed koden'max_length'om längden påvalueär större änlimit_value, som kan vara en anropbar.
MinLengthValidatorLink to this heading
- class MinLengthValidator(limit_value, message=None)Link to this definition
Utlöser ett
ValidationErrormed koden'min_length'om längden påvalueär mindre änlimit_value, som kan vara en anropbar.
DecimalValidatorLink to this heading
- class DecimalValidator(max_digits, decimal_places)Link to this definition
Utlöser
ValidationErrormed följande koder:'max_digits'om antalet siffror är större änmax_digits.'max_decimal_places'om antalet decimaler är större ändecimal_places.'max_whole_digits'om antalet hela siffror är större än skillnaden mellanmax_digitsochdecimal_places.
FileExtensionValidatorLink to this heading
- class FileExtensionValidator(allowed_extensions, message, code)Link to this definition
Utlöser ett
ValidationErrormed koden'invalid_extension'om tillägget tillvalue.name(valueär enFile) inte finns iallowed_extensions. Tillägget jämförs fall-insensitivt medallowed_extensions.
validera_bild_fil_utvidgningLink to this heading
- validate_image_file_extensionLink to this definition
Använder Pillow för att säkerställa att
value.name(valueär enFile) har ett giltigt bildtillägg.
ProhibitNullCharactersValidatorLink to this heading
- class ProhibitNullCharactersValidator(message=None, code=None)Link to this definition
Utlöser ett
ValidationErroromstr(value)innehåller ett eller flera nolltecken ('\x00').- messageLink to this definition
Det felmeddelande som används av
ValidationErrorom valideringen misslyckas. Standard är"Null-tecken är inte tillåtna.".
- codeLink to this definition
Den felkod som används av
ValidationErrorom valideringen misslyckas. Standardvärdet är"null_characters_not_allowed".
StepValueValidatorLink to this heading
- class StepValueValidator(limit_value, message=None, offset=None)Link to this definition
Utlöser ett
ValidationErrormed koden'step_size'omvalueinte är en integrerad multipel avlimit_value, som kan vara ett flottör-, heltal- eller decimalvärde eller en callable. Näroffsetär inställt sker valideringen motlimit_valueplusoffset. Till exempel:, förStepValueValidator(3, offset=1.4)inkluderar giltiga värden1.4,4.4,7.4,10.4, och så vidare.