---
title: "Validerare"
version: 5.2
locale: sv
source: https://docs.djangoproject.com/sv/5.2/ref/validators/
canonical: https://djangodocs.dev/sv/5.2/ref/validators/
---
# Validerare

## Skriva validatorer

En validator är en anropsbar som tar ett värde och skapar ett [`ValidationError`](/sv/5.2/ref/exceptions/#django.core.exceptions.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`](/sv/5.2/ref/models/fields/#django.db.models.Field.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`](#django.core.validators.RegexValidator), till exempel, använder denna teknik. Om en klassbaserad validerare används i modellfältalternativet [`validators`](/sv/5.2/ref/models/fields/#django.db.models.Field.validators) bör du se till att den är [serialiserbar av migreringsramverket](/sv/5.2/topics/migrations/#migration-serializing) genom att lägga till [deconstruct()](/sv/5.2/topics/migrations/#custom-deconstruct-method) och `__eq__()`-metoder.

## Hur validerare körs

Se [formulärvalidering](/sv/5.2/ref/forms/validation/) för mer information om hur validerare körs i formulär, och [Validering av objekt](/sv/5.2/ref/models/instances/#validating-objects) 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`](/sv/5.2/topics/forms/modelforms/#django.forms.ModelForm), kommer den att köra dina validerare på alla fält som ingår i ditt formulär. Se [ModelForm-dokumentationen](/sv/5.2/topics/forms/modelforms/) för information om hur modellvalidering interagerar med formulär.

## Inbyggda validerare

Modulen [`django.core.validators`](#module-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.

### `RegexValidator`

#### `class RegexValidator(regex=None, message=None, code=None, inverse_match=None, flags=0)`

**Parametrar:** - `regex` – Om inte `None`, åsidosätter [`regex`](#django.core.validators.RegexValidator.regex). Kan vara en sträng med ett reguljärt uttryck eller ett förkompilerat reguljärt uttryck.
- `message` – Om inte `None`, åsidosätter [`message`](#django.core.validators.RegexValidator.message).
- `code` – Om inte `None`, åsidosätter [`code`](#django.core.validators.RegexValidator.code).
- `inverse_match` – Om inte `None`, åsidosätter [`inverse_match`](#django.core.validators.RegexValidator.inverse_match).
- `flags` – Om inte `None`, åsidosätter [`flags`](#django.core.validators.RegexValidator.flags). I så fall måste [`regex`](#django.core.validators.RegexValidator.regex) vara en sträng med ett reguljärt uttryck, annars uppstår [`TypeError`](https://docs.python.org/3/library/exceptions.html#TypeError).

En [`RegexValidator`](#django.core.validators.RegexValidator) söker i det angivna `värdet` efter ett givet reguljärt uttryck med [`re.search()`](https://docs.python.org/3/library/re.html#re.search). Som standard uppstår ett [`ValidationError`](/sv/5.2/ref/exceptions/#django.core.exceptions.ValidationError) med [`message`](#django.core.validators.RegexValidator.message) och [`code`](#django.core.validators.RegexValidator.code) om en matchning **inte** hittas. Dess beteende kan inverteras genom att sätta [`inverse_match`](#django.core.validators.RegexValidator.inverse_match) till `True`, i vilket fall [`ValidationError`](/sv/5.2/ref/exceptions/#django.core.exceptions.ValidationError) utlöses när en matchning **finns**.

#### `regex`

Det reguljära uttrycksmönstret som ska sökas efter i det angivna `värdet`, med [`re.search()`](https://docs.python.org/3/library/re.html#re.search). Detta kan vara en sträng eller ett förkompilerat reguljärt uttryck skapat med [`re.compile()`](https://docs.python.org/3/library/re.html#re.compile). Standardvärdet är den tomma strängen, som kommer att hittas i alla möjliga `värden`.

#### `message`

Det felmeddelande som används av [`ValidationError`](/sv/5.2/ref/exceptions/#django.core.exceptions.ValidationError) om valideringen misslyckas. Standardvärdet är `"Ange ett giltigt värde"`.

#### `code`

Den felkod som används av [`ValidationError`](/sv/5.2/ref/exceptions/#django.core.exceptions.ValidationError) om valideringen misslyckas. Standardvärdet är `"invalid"`.

#### `inverse_match`

Matchningsläge för [`regex`](#django.core.validators.RegexValidator.regex). Standardvärdet är `False`.

#### `flags`

Flaggorna för [regex](https://docs.python.org/3/library/re.html#contents-of-module-re) som används när strängen för reguljära uttryck [`regex`](#django.core.validators.RegexValidator.regex) kompileras. Om [`regex`](#django.core.validators.RegexValidator.regex) är ett förkompilerat reguljärt uttryck, och [`flags`](#django.core.validators.RegexValidator.flags) åsidosätts, uppstår [`TypeError`](https://docs.python.org/3/library/exceptions.html#TypeError). Standardvärde är `0`.

### `EmailValidator`

#### `class EmailValidator(message=None, code=None, allowlist=None)`

**Parametrar:** - `message` – Om inte `None`, åsidosätter [`message`](#django.core.validators.EmailValidator.message).
- `code` – Om inte `None`, åsidosätter [`code`](#django.core.validators.EmailValidator.code).
- `allowlist` – Om inte `None`, åsidosätter [`allowlist`](#django.core.validators.EmailValidator.allowlist).

En [`EmailValidator`](#django.core.validators.EmailValidator) säkerställer att ett värde ser ut som ett e-postmeddelande, och ger upphov till ett [`ValidationError`](/sv/5.2/ref/exceptions/#django.core.exceptions.ValidationError) med [`message`](#django.core.validators.EmailValidator.message) och [`code`](#django.core.validators.EmailValidator.code) om det inte gör det. Värden som är längre än 320 tecken betraktas alltid som ogiltiga.

#### `message`

Det felmeddelande som används av [`ValidationError`](/sv/5.2/ref/exceptions/#django.core.exceptions.ValidationError) om valideringen misslyckas. Standard är `"Ange en giltig e-postadress"`.

#### `code`

Den felkod som används av [`ValidationError`](/sv/5.2/ref/exceptions/#django.core.exceptions.ValidationError) om valideringen misslyckas. Standardvärdet är `"invalid"`.

#### `allowlist`

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 i `allowlist`, kringgås denna validering. Om den inte anges är standardvärdet för `allowlist` `['localhost']`. Andra domäner som inte innehåller en punkt kommer inte att klara valideringen, så du måste lägga till dem i `allowlist` vid behov.

### `DomainNameValidator`

> **New in Django 5.1**

#### `class DomainNameValidator(accept_idna=True, message=None, code=None)`

En [`RegexValidator`](#django.core.validators.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 [`RegexValidator`](#django.core.validators.RegexValidator) accepterar `DomainNameValidator` ett extra valfritt attribut:

#### `accept_idna`

Avgör om internationaliserade domännamn ska accepteras, dvs. domännamn som innehåller icke-ASCII-tecken. Standardvärdet är `True`.

### `URLValidator`

#### `class URLValidator(schemes=None, regex=None, message=None, code=None)`

En [`RegexValidator`](#django.core.validators.RegexValidator)-underklass som säkerställer att ett värde ser ut som en URL, och ger felkoden `'invalid` om det inte gör det. Värden som är längre än [`max_length`](#django.core.validators.URLValidator.max_length) tecken betraktas alltid som ogiltiga.

Loopback-adresser och reserverade IP-utrymmen betraktas som giltiga. Både bokstavliga IPv6-adresser ([**RFC 3986 Section 3.2.2**](https://datatracker.ietf.org/doc/html/rfc3986.html#section-3.2.2)) och Unicode-domäner stöds.

Utöver de valfria argumenten i sin överordnade klass [`RegexValidator`](#django.core.validators.RegexValidator) accepterar `URLValidator` ett extra valfritt attribut:

#### `schemes`

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](https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml).

> **Warning**
>
> Värden som börjar med `file:///` kommer inte att godkännas även om `file`-schema anges. Giltiga värden måste innehålla en host.

#### `max_length`

Den maximala längden på värden som kan anses vara giltiga. Standardvärdet är 2048 tecken.

### `validera_email`

#### `validate_email`

En [`EmailValidator`](#django.core.validators.EmailValidator)-instans utan några anpassningar.

### `validera_domännamn`

> **New in Django 5.1**

#### `validate_domain_name`

En [`DomainNameValidator`](#django.core.validators.DomainNameValidator)-instans utan några anpassningar.

### `validera_slug`

#### `validate_slug`

En instans av [`RegexValidator`](#django.core.validators.RegexValidator) som säkerställer att ett värde endast består av bokstäver, siffror, understreck eller bindestreck.

### `validera_unicode_slug`

#### `validate_unicode_slug`

En instans av [`RegexValidator`](#django.core.validators.RegexValidator) som säkerställer att ett värde endast består av Unicode-bokstäver, siffror, understreck eller bindestreck.

### `validera_ipv4_adress`

#### `validate_ipv4_address`

En [`RegexValidator`](#django.core.validators.RegexValidator)-instans som säkerställer att ett värde ser ut som en IPv4-adress.

### `validera_ipv6_adress`

#### `validate_ipv6_address`

Använder `django.utils.ipv6` för att kontrollera giltigheten för en IPv6-adress.

### `validera_ipv46_adress`

#### `validate_ipv46_address`

Använder både `validate_ipv4_address` och `validate_ipv6_address` för att säkerställa att ett värde är antingen en giltig IPv4- eller IPv6-adress.

### `validera_kommaseparerad_talslista`

#### `validate_comma_separated_integer_list`

En instans av [`RegexValidator`](#django.core.validators.RegexValidator) som säkerställer att ett värde är en kommaseparerad lista med heltal.

### `int_list_validator`

#### `int_list_validator(sep=',', message=None, code='invalid', allow_negative=False)`

Returnerar en instans av [`RegexValidator`](#django.core.validators.RegexValidator) som säkerställer att en sträng består av heltal separerade med `sep`. Den tillåter negativa heltal när `allow_negative` är `True`.

### `MaxValueValidator`

#### `class MaxValueValidator(limit_value, message=None)`

Utlöser ett [`ValidationError`](/sv/5.2/ref/exceptions/#django.core.exceptions.ValidationError) med koden `'max_value'` om `value` är större än `limit_value`, som kan vara en anropbar.

### `MinValueValidator`

#### `class MinValueValidator(limit_value, message=None)`

Utlöser ett [`ValidationError`](/sv/5.2/ref/exceptions/#django.core.exceptions.ValidationError) med koden `'min_value'` om `value` är mindre än `limit_value`, som kan vara en anropbar.

### `MaxLengthValidator`

#### `class MaxLengthValidator(limit_value, message=None)`

Utlöser ett [`ValidationError`](/sv/5.2/ref/exceptions/#django.core.exceptions.ValidationError) med koden `'max_length'` om längden på `value` är större än `limit_value`, som kan vara en anropbar.

### `MinLengthValidator`

#### `class MinLengthValidator(limit_value, message=None)`

Utlöser ett [`ValidationError`](/sv/5.2/ref/exceptions/#django.core.exceptions.ValidationError) med koden `'min_length'` om längden på `value` är mindre än `limit_value`, som kan vara en anropbar.

### `DecimalValidator`

#### `class DecimalValidator(max_digits, decimal_places)`

Utlöser [`ValidationError`](/sv/5.2/ref/exceptions/#django.core.exceptions.ValidationError) med följande koder:

- `'max_digits'` om antalet siffror är större än `max_digits`.
- `'max_decimal_places'` om antalet decimaler är större än `decimal_places`.
- `'max_whole_digits'` om antalet hela siffror är större än skillnaden mellan `max_digits` och `decimal_places`.

### `FileExtensionValidator`

#### `class FileExtensionValidator(allowed_extensions, message, code)`

Utlöser ett [`ValidationError`](/sv/5.2/ref/exceptions/#django.core.exceptions.ValidationError) med koden `'invalid_extension'` om tillägget till `value.name` (`value` är en [`File`](/sv/5.2/ref/files/file/#django.core.files.File)) inte finns i `allowed_extensions`. Tillägget jämförs fall-insensitivt med `allowed_extensions`.

> **Warning**
>
> Förlita dig inte på validering av filtillägget för att avgöra en fils typ. Filer kan döpas om så att de får vilket filnamnstillägg som helst, oavsett vilka data de innehåller.

### `validera_bild_fil_utvidgning`

#### `validate_image_file_extension`

Använder Pillow för att säkerställa att `value.name` (`value` är en [`File`](/sv/5.2/ref/files/file/#django.core.files.File)) har [ett giltigt bildtillägg](https://pillow.readthedocs.io/en/latest/handbook/image-file-formats.html).

### `ProhibitNullCharactersValidator`

#### `class ProhibitNullCharactersValidator(message=None, code=None)`

Utlöser ett [`ValidationError`](/sv/5.2/ref/exceptions/#django.core.exceptions.ValidationError) om `str(value)` innehåller ett eller flera nolltecken (`'\x00'`).

**Parametrar:** - `message` – Om inte `None`, åsidosätter [`message`](#django.core.validators.ProhibitNullCharactersValidator.message).
- `code` – Om inte `None`, åsidosätter [`code`](#django.core.validators.ProhibitNullCharactersValidator.code).

#### `message`

Det felmeddelande som används av [`ValidationError`](/sv/5.2/ref/exceptions/#django.core.exceptions.ValidationError) om valideringen misslyckas. Standard är `"Null-tecken är inte tillåtna."`.

#### `code`

Den felkod som används av [`ValidationError`](/sv/5.2/ref/exceptions/#django.core.exceptions.ValidationError) om valideringen misslyckas. Standardvärdet är `"null_characters_not_allowed"`.

### `StepValueValidator`

#### `class StepValueValidator(limit_value, message=None, offset=None)`

Utlöser ett [`ValidationError`](/sv/5.2/ref/exceptions/#django.core.exceptions.ValidationError) med koden `'step_size'` om `value` inte är en integrerad multipel av `limit_value`, som kan vara ett flottör-, heltal- eller decimalvärde eller en callable. När `offset` är inställt sker valideringen mot `limit_value` plus `offset`. Till exempel:, för `StepValueValidator(3, offset=1.4)` inkluderar giltiga värden `1.4`, `4.4`, `7.4`, `10.4`, och så vidare.
