---
title: "API för rendering av formulär"
version: 5.2
locale: sv
source: https://docs.djangoproject.com/sv/5.2/ref/forms/renderers/
canonical: https://djangodocs.dev/sv/5.2/ref/forms/renderers/
---
# API för rendering av formulär

Djangos formulärwidgets renderas med hjälp av Djangos [template engines system](/sv/5.2/topics/templates/).

Renderingsprocessen för formulär kan anpassas på flera nivåer:

- Widgets kan ange egna mallnamn.
- Formulär och widgetar kan ange egna renderarklasser.
- En widgets mall kan åsidosättas av ett projekt. (Återanvändbara program bör vanligtvis inte åsidosätta inbyggda mallar eftersom de kan komma i konflikt med ett projekts egna mallar)

## API för rendering på låg nivå

Renderingen av formulärmallar styrs av en anpassningsbar renderingsklass. En anpassad renderare kan anges genom att uppdatera inställningen [`FORM_RENDERER`](/sv/5.2/ref/settings/#std-setting-FORM_RENDERER). Standardvärdet är `'`[`django.forms.renderers.DjangoTemplates`](#django.forms.renderers.DjangoTemplates)`'`.

Genom att ange en anpassad formulärrenderare och åsidosätta [`form_template_name`](#django.forms.renderers.BaseRenderer.form_template_name) kan du justera standardmarkeringen för formulär i hela projektet från ett enda ställe.

Du kan också ange en anpassad renderare per formulär eller per widget genom att ange attributet [`Form.default_renderer`](/sv/5.2/ref/forms/api/#django.forms.Form.default_renderer) eller genom att använda argumentet `renderer` i [`Form.render()`](/sv/5.2/ref/forms/api/#django.forms.Form.render) eller [`Widget.render()`](/sv/5.2/ref/forms/widgets/#django.forms.Widget.render).

Matchningspunkter gäller för rendering av formulär. Se [Använda en formulärsats i vyer och mallar](/sv/5.2/topics/forms/formsets/#formset-rendering) för diskussion.

Använd en av [inbyggda renderare för mallformulär](#built-in-template-form-renderers) eller implementera din egen. Anpassade renderare måste implementera en `render(template_name, context, request=None)` metod. Den bör returnera en renderad mall (som en sträng) eller ge upphov till [`TemplateDoesNotExist`](/sv/5.2/topics/templates/#django.template.TemplateDoesNotExist).

#### `class BaseRenderer`

Basklass för de inbyggda formulärrenderingarna.

#### `form_template_name`

Standardnamnet på den mall som ska användas för att rendera ett formulär.

Standard är mallen `"django/forms/div.html"`.

#### `formset_template_name`

Standardnamnet på den mall som ska användas för att återge en formulärsats.

Standard är mallen `"django/forms/formsets/div.html"`.

#### `field_template_name`

Standardnamnet på den mall som används för att rendera en `BoundField`.

Standardvärde är `"django/forms/field.html"`

#### `bound_field_class`

> **New in Django 5.2**

Standardklassen som används för att representera formulärfält i hela projektet.

Standardvärdet är [`BoundField`](/sv/5.2/ref/forms/api/#django.forms.BoundField) class.

Detta kan anpassas ytterligare med hjälp av [`Form.bound_field_class`](/sv/5.2/ref/forms/api/#django.forms.Form.bound_field_class) för överstyrning per formulär, eller [`Field.bound_field_class`](/sv/5.2/ref/forms/fields/#django.forms.Field.bound_field_class) för överstyrning per fält.

#### `get_template(template_name)`

Underklasser måste implementera denna metod med lämplig logik för att hitta mallar.

#### `render(template_name, context, request=None)`

Renderar den angivna mallen, eller ger upphov till [`TemplateDoesNotExist`](/sv/5.2/topics/templates/#django.template.TemplateDoesNotExist).

## Inbyggda formulärmallar för mallar

### `DjangoMallar`

#### `class DjangoTemplates`

Denna renderare använder en fristående [`DjangoTemplates`](/sv/5.2/topics/templates/#django.template.backends.django.DjangoTemplates)-motor (utan koppling till vad du kan ha konfigurerat i [`TEMPLATES`](/sv/5.2/ref/settings/#std-setting-TEMPLATES)-inställningen). Den laddar mallar först från den inbyggda katalogen för formulärmallar i [django/forms/templates](https://github.com/django/django/blob/stable/5.2.x/django/forms/templates) och sedan från de installerade programmens mallkataloger med hjälp av [`app_directories`](/sv/5.2/ref/templates/api/#django.template.loaders.app_directories.Loader).

Om du vill rendera mallar med anpassningar från din inställning [`TEMPLATES`](/sv/5.2/ref/settings/#std-setting-TEMPLATES), t.ex. kontextprocessorer, använder du renderingsprogrammet [`TemplatesSetting`](#django.forms.renderers.TemplatesSetting).

#### `class DjangoDivFormRenderer`

> **Deprecated since Django 5.0**
>
> Ersatt sedan version 5.0.

Aliaset för [`DjangoTemplates`](#django.forms.renderers.DjangoTemplates).

### `Jinja2`

#### `class Jinja2`

Denna renderare är densamma som [`DjangoTemplates`](#django.forms.renderers.DjangoTemplates) renderare förutom att den använder en [`Jinja2`](/sv/5.2/topics/templates/#django.template.backends.jinja2.Jinja2) backend. Mallar för de inbyggda widgetarna finns i [django/forms/jinja2](https://github.com/django/django/blob/stable/5.2.x/django/forms/jinja2) och installerade appar kan tillhandahålla mallar i en `jinja2`-katalog.

För att kunna använda den här backend måste alla formulär och widgetar i ditt projekt och dess tredjepartsappar ha Jinja2-mallar. Om du inte tillhandahåller dina egna Jinja2-mallar för widgetar som inte har några, kan du inte använda den här renderingen. Till exempel: inkluderar [`django.contrib.admin`](/sv/5.2/ref/contrib/admin/#module-django.contrib.admin) inte Jinja2-mallar för sina widgets på grund av deras användning av Django-malltaggar.

#### `class Jinja2DivFormRenderer`

> **Deprecated since Django 5.0**
>
> Ersatt sedan version 5.0.

Alias för [`Jinja2`](#django.forms.renderers.Jinja2).

### `TemplatesSetting`

#### `class TemplatesSetting`

Denna renderare ger dig fullständig kontroll över hur formulär- och widgetmallar hämtas. Den använder [`get_template()`](/sv/5.2/topics/templates/#django.template.loader.get_template) för att hitta mallar baserat på vad som konfigureras i inställningen [`TEMPLATES`](/sv/5.2/ref/settings/#std-setting-TEMPLATES).

För att använda denna renderare tillsammans med de inbyggda mallarna krävs antingen:

- `'django.forms'` i [`INSTALLED_APPS`](/sv/5.2/ref/settings/#std-setting-INSTALLED_APPS) och minst en motor med [`APP_DIRS=True`](/sv/5.2/ref/settings/#std-setting-TEMPLATES-APP_DIRS).
- Lägga till den inbyggda mallkatalogen i [`DIRS`](/sv/5.2/ref/settings/#std-setting-TEMPLATES-DIRS) för en av dina mallmotorer. För att generera den sökvägen:

  ```
  import django

  django.__path__[0] + "/forms/templates"  # or '/forms/jinja2'
  ```

För att kunna använda den här renderaren måste du se till att de formulärmallar som ditt projekt behöver kan hittas.

## Kontext tillgänglig i formulärmallar

Formset-mallar får en kontext från [`BaseFormSet.get_context()`](/sv/5.2/topics/forms/formsets/#django.forms.formsets.BaseFormSet.get_context). Som standard får formulär en ordbok med följande värden:

- `formulär`: Instansen för formuläret.

## Kontext tillgänglig i formulärmallar

Formulärmallar får en kontext från [`Form.get_context()`](/sv/5.2/ref/forms/api/#django.forms.Form.get_context). Som standard får formulär en ordbok med följande värden:

- ”Formulär”: Det bundna formuläret.
- `fält`: Alla bundna fält, utom de dolda fälten.
- `hidden_fields`: Alla dolda bundna fält.
- `fel`: Alla formulärfel som inte är fältrelaterade eller som är relaterade till dolda fält.

## Sammanhang tillgängligt i fältmallar

Fältmallar får en kontext från [`BoundField.get_context()`](/sv/5.2/ref/forms/api/#django.forms.BoundField.get_context). Som standard får fält en ordbok med följande värden:

- `fält`: Klassen:~django.forms.BoundField.

## Kontext tillgänglig i widgetmallar

Widgetmallar får en kontext från [`Widget.get_context()`](/sv/5.2/ref/forms/widgets/#django.forms.Widget.get_context). Som standard får widgetar ett enda värde i kontexten, `widget`. Detta är en ordbok som innehåller värden som t.ex:

- `namn`
- `värde`
- `attrs`
- `is_hidden`
- `template_name`

Vissa widgetar lägger till ytterligare information i sammanhanget. Till exempel: definierar alla widgetar som är underklassade `Input` `widget['type']` och [`MultiWidget`](/sv/5.2/ref/forms/widgets/#django.forms.MultiWidget) definierar `widget['subwidgets']` för loopingändamål.

## Åsidosätta inbyggda mallar för formulär

[`BaseFormSet.template_name`](/sv/5.2/topics/forms/formsets/#django.forms.formsets.BaseFormSet.template_name)

För att åsidosätta formulärmallar måste du använda renderingen [`TemplatesSetting`](#django.forms.renderers.TemplatesSetting). Då fungerar åsidosättande av formulärmallar [på samma sätt som](/sv/5.2/howto/overriding-templates/) åsidosättande av alla andra mallar i ditt projekt.

## Åsidosätta inbyggda formulärmallar

[`Form.template_name`](/sv/5.2/ref/forms/api/#django.forms.Form.template_name)

För att åsidosätta formulärmallar måste du använda [`TemplatesSetting`](#django.forms.renderers.TemplatesSetting)-renderaren. Då fungerar åsidosättande av formulärmallar [på samma sätt som](/sv/5.2/howto/overriding-templates/) åsidosättande av alla andra mallar i ditt projekt.

## Åsidosätta inbyggda fältmallar

[`Field.template_name`](/sv/5.2/ref/forms/fields/#django.forms.Field.template_name)

För att åsidosätta fältmallar måste du använda [`TemplatesSetting`](#django.forms.renderers.TemplatesSetting)-renderaren. Då fungerar åsidosättande av fältmallar [på samma sätt som](/sv/5.2/howto/overriding-templates/) åsidosättande av alla andra mallar i ditt projekt.

## Åsidosätta inbyggda widgetmallar

Varje widget har ett attribut `template_name` med ett värde som till exempel `input.html`. Inbyggda widgetmallar lagras i sökvägen `django/forms/widgets`. Du kan tillhandahålla en anpassad mall för `input.html` genom att definiera `django/forms/widgets/input.html`, till exempel. Se inbyggda widgetar för namnet på varje widgets mall.

För att åsidosätta widgetmallar måste du använda [`TemplatesSetting`](#django.forms.renderers.TemplatesSetting)-renderaren. Då fungerar åsidosättande av widgetmallar [på samma sätt som](/sv/5.2/howto/overriding-templates/) åsidosättande av alla andra mallar i ditt projekt.
