---
title: "Generiska redigeringsvyer"
version: 6.0
locale: sv
source: https://docs.djangoproject.com/sv/6.0/ref/class-based-views/generic-editing/
canonical: https://djangodocs.dev/sv/6.0/ref/class-based-views/generic-editing/
---
# Generiska redigeringsvyer

Följande vyer beskrivs på den här sidan och ger en grund för redigering av innehåll:

- [`django.views.generic.edit.FormView`](#django.views.generic.edit.FormView)
- [`django.views.generic.edit.CreateView`](#django.views.generic.edit.CreateView)
- [`django.views.generic.edit.UpdateView`](#django.views.generic.edit.UpdateView)
- [`django.views.generic.edit.DeleteView`](#django.views.generic.edit.DeleteView)

> **See also**
>
> Ramverket [messages](/sv/6.0/ref/contrib/messages/) innehåller [`SuccessMessageMixin`](/sv/6.0/ref/contrib/messages/#django.contrib.messages.views.SuccessMessageMixin), som underlättar presentationen av meddelanden om lyckade formulärinlämningar.

> **Note**
>
> Några av exemplen på den här sidan förutsätter att en `Author`-modell har definierats på följande sätt i `myapp/models.py`:
>
> ```
> from django.db import models
> from django.urls import reverse
>
>
> class Author(models.Model):
>     name = models.CharField(max_length=200)
>
>     def get_absolute_url(self):
>         return reverse("author-detail", kwargs={"pk": self.pk})
> ```

## `FormView`

#### `class django.views.generic.edit.FormView`

En vy som visar ett formulär. Vid fel visas formuläret på nytt med valideringsfel; vid framgång omdirigeras formuläret till en ny URL.

**Ancestors (MRO)**

Denna vy ärver metoder och attribut från följande vyer:

- [`django.views.generic.base.TemplateResponseMixin`](/sv/6.0/ref/class-based-views/mixins-simple/#django.views.generic.base.TemplateResponseMixin)
- [`django.views.generic.edit.BaseFormView`](#django.views.generic.edit.BaseFormView)
- [`django.views.generic.edit.FormMixin`](/sv/6.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin)
- [`django.views.generic.edit.ProcessFormView`](/sv/6.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView)
- [`django.views.generic.base.View`](/sv/6.0/ref/class-based-views/base/#django.views.generic.base.View)

**Exempel myapp/forms.py**:

```
from django import forms

class ContactForm(forms.Form):
    name = forms.CharField()
    message = forms.CharField(widget=forms.Textarea)

    def send_email(self):
        # send email using the self.cleaned_data dictionary
        pass
```

**Exempel myapp/views.py**:

```
from myapp.forms import ContactForm
from django.views.generic.edit import FormView

class ContactFormView(FormView):
    template_name = "contact.html"
    form_class = ContactForm
    success_url = "/thanks/"

    def form_valid(self, form):
        # This method is called when valid form data has been POSTed.
        # It should return an HttpResponse.
        form.send_email()
        return super().form_valid(form)
```

**Exempel myapp/contact.html**:

```html+django
<form method="post">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Send message">
</form>
```

#### `class django.views.generic.edit.BaseFormView`

En basvy för att visa ett formulär. Den är inte avsedd att användas direkt, utan snarare som en överordnad klass till [`django.views.generic.edit.FormView`](#django.views.generic.edit.FormView) eller andra vyer som visar ett formulär.

**Ancestors (MRO)**

Denna vy ärver metoder och attribut från följande vyer:

- [`django.views.generic.edit.FormMixin`](/sv/6.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin)
- [`django.views.generic.edit.ProcessFormView`](/sv/6.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView)

## `CreateView`

#### `class django.views.generic.edit.CreateView`

En vy som visar ett formulär för att skapa ett objekt, visa formuläret igen med valideringsfel (om det finns några) och spara objektet.

**Ancestors (MRO)**

Denna vy ärver metoder och attribut från följande vyer:

- [`django.views.generic.detail.SingleObjectTemplateResponseMixin`](/sv/6.0/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectTemplateResponseMixin)
- [`django.views.generic.base.TemplateResponseMixin`](/sv/6.0/ref/class-based-views/mixins-simple/#django.views.generic.base.TemplateResponseMixin)
- [`django.views.generic.edit.BaseCreateView`](#django.views.generic.edit.BaseCreateView)
- [`django.views.generic.edit.ModelFormMixin`](/sv/6.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ModelFormMixin)
- [`django.views.generic.edit.FormMixin`](/sv/6.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin)
- [`django.views.generic.detail.SingleObjectMixin`](/sv/6.0/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin)
- [`django.views.generic.edit.ProcessFormView`](/sv/6.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView)
- [`django.views.generic.base.View`](/sv/6.0/ref/class-based-views/base/#django.views.generic.base.View)

**Attribut**

#### `template_name_suffix`

Sidan `CreateView` som visas för en `GET`-begäran använder ett `template_name_suffix` på `'_form`. Om man t.ex. ändrar detta attribut till `'_create_form'` för en vy som skapar objekt för exempelmodellen `Author` skulle standardnamnet `template_name` bli `'myapp/author_create_form.html'`.

#### `object`

När du använder `CreateView` har du tillgång till `self.object`, som är det objekt som skapas. Om objektet inte har skapats ännu kommer värdet att vara `None`.

**Exempel myapp/views.py**:

```
from django.views.generic.edit import CreateView
from myapp.models import Author

class AuthorCreateView(CreateView):
    model = Author
    fields = ["name"]
```

**Exempel myapp/author\_form.html**:

```html+django
<form method="post">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Save">
</form>
```

#### `class django.views.generic.edit.BaseCreateView`

En basvy för att skapa en ny objektinstans. Den är inte avsedd att användas direkt, utan snarare som en överordnad klass till [`django.views.generic.edit.CreateView`](#django.views.generic.edit.CreateView).

**Ancestors (MRO)**

Denna vy ärver metoder och attribut från följande vyer:

- [`django.views.generic.edit.ModelFormMixin`](/sv/6.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ModelFormMixin)
- [`django.views.generic.edit.ProcessFormView`](/sv/6.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView)

**Metoder**

#### `get(request, *args, **kwargs)`

Ställer in den aktuella objektinstansen (`self.object`) till `None`.

#### `post(request, *args, **kwargs)`

Ställer in den aktuella objektinstansen (`self.object`) till `None`.

## `UpdateView`

#### `class django.views.generic.edit.UpdateView`

En vy som visar ett formulär för att redigera ett befintligt objekt, visa formuläret igen med valideringsfel (om det finns några) och spara ändringar i objektet. Här används ett formulär som automatiskt genereras från objektets modellklass (om inte en formulärklass anges manuellt).

**Ancestors (MRO)**

Denna vy ärver metoder och attribut från följande vyer:

- [`django.views.generic.detail.SingleObjectTemplateResponseMixin`](/sv/6.0/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectTemplateResponseMixin)
- [`django.views.generic.base.TemplateResponseMixin`](/sv/6.0/ref/class-based-views/mixins-simple/#django.views.generic.base.TemplateResponseMixin)
- [`django.views.generic.edit.BaseUpdateView`](#django.views.generic.edit.BaseUpdateView)
- [`django.views.generic.edit.ModelFormMixin`](/sv/6.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ModelFormMixin)
- [`django.views.generic.edit.FormMixin`](/sv/6.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin)
- [`django.views.generic.detail.SingleObjectMixin`](/sv/6.0/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin)
- [`django.views.generic.edit.ProcessFormView`](/sv/6.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView)
- [`django.views.generic.base.View`](/sv/6.0/ref/class-based-views/base/#django.views.generic.base.View)

**Attribut**

#### `template_name_suffix`

Sidan `UpdateView` som visas för en `GET`-begäran använder ett `template_name_suffix` på `'_form`. Om man t.ex. ändrar detta attribut till `'_update_form'` för en vy som uppdaterar objekt för exempelmodellen `Author` skulle standardnamnet `template_name` bli `'myapp/author_update_form.html'`.

#### `object`

När du använder `UpdateView` har du tillgång till `self.object`, som är det objekt som uppdateras.

**Exempel myapp/views.py**:

```
from django.views.generic.edit import UpdateView
from myapp.models import Author

class AuthorUpdateView(UpdateView):
    model = Author
    fields = ["name"]
    template_name_suffix = "_update_form"
```

**Exempel myapp/author\_update\_form.html**:

```html+django
<form method="post">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Update">
</form>
```

#### `class django.views.generic.edit.BaseUpdateView`

En basvy för uppdatering av en befintlig objektinstans. Den är inte avsedd att användas direkt, utan snarare som en överordnad klass till [`django.views.generic.edit.UpdateView`](#django.views.generic.edit.UpdateView).

**Ancestors (MRO)**

Denna vy ärver metoder och attribut från följande vyer:

- [`django.views.generic.edit.ModelFormMixin`](/sv/6.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ModelFormMixin)
- [`django.views.generic.edit.ProcessFormView`](/sv/6.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView)

**Metoder**

#### `get(request, *args, **kwargs)`

Ställer in den aktuella objektinstansen (`self.object`).

#### `post(request, *args, **kwargs)`

Ställer in den aktuella objektinstansen (`self.object`).

## `DeleteView`

#### `class django.views.generic.edit.DeleteView`

En vy som visar en bekräftelsesida och raderar ett befintligt objekt. Det angivna objektet kommer endast att raderas om förfrågningsmetoden är `POST`. Om denna vy hämtas via `GET` kommer den att visa en bekräftelsesida som bör innehålla ett formulär som POSTAR till samma URL.

**Ancestors (MRO)**

Denna vy ärver metoder och attribut från följande vyer:

- [`django.views.generic.detail.SingleObjectTemplateResponseMixin`](/sv/6.0/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectTemplateResponseMixin)
- [`django.views.generic.base.TemplateResponseMixin`](/sv/6.0/ref/class-based-views/mixins-simple/#django.views.generic.base.TemplateResponseMixin)
- [`django.views.generic.edit.BaseDeleteView`](#django.views.generic.edit.BaseDeleteView)
- [`django.views.generic.edit.DeletionMixin`](/sv/6.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.DeletionMixin)
- [`django.views.generic.edit.FormMixin`](/sv/6.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin)
- [`django.views.generic.base.ContextMixin`](/sv/6.0/ref/class-based-views/mixins-simple/#django.views.generic.base.ContextMixin)
- [`django.views.generic.detail.BaseDetailView`](/sv/6.0/ref/class-based-views/generic-display/#django.views.generic.detail.BaseDetailView)
- [`django.views.generic.detail.SingleObjectMixin`](/sv/6.0/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin)
- [`django.views.generic.base.View`](/sv/6.0/ref/class-based-views/base/#django.views.generic.base.View)

**Attribut**

#### `form_class`

Ärvd från [`BaseDeleteView`](#django.views.generic.edit.BaseDeleteView). Den formulärklass som kommer att användas för att bekräfta begäran. Som standard [`django.forms.Form`](/sv/6.0/ref/forms/api/#django.forms.Form), vilket resulterar i ett tomt formulär som alltid är giltigt.

Genom att tillhandahålla en egen subklass av `Form` kan du lägga till ytterligare krav, t.ex. en kryssruta för bekräftelse.

#### `template_name_suffix`

Sidan `DeleteView` som visas för en `GET` begäran använder ett `template_name_suffix` av `'_confirm_delete`. Om man t.ex. ändrar detta attribut till `'_check_delete` för en vy som raderar objekt för exempelmodellen `Author` skulle standardnamnet på `template_name` bli `'myapp/author_check_delete.html'`.

**Exempel myapp/views.py**:

```
from django.urls import reverse_lazy
from django.views.generic.edit import DeleteView
from myapp.models import Author

class AuthorDeleteView(DeleteView):
    model = Author
    success_url = reverse_lazy("author-list")
```

**Exempel myapp/author\_confirm\_delete.html**:

```html+django
<form method="post">{% csrf_token %}
    <p>Are you sure you want to delete "{{ object }}"?</p>
    {{ form }}
    <input type="submit" value="Confirm">
</form>
```

#### `class django.views.generic.edit.BaseDeleteView`

En basvy för att radera en objektinstans. Den är inte avsedd att användas direkt, utan snarare som en överordnad klass till [`django.views.generic.edit.DeleteView`](#django.views.generic.edit.DeleteView).

**Ancestors (MRO)**

Denna vy ärver metoder och attribut från följande vyer:

- [`django.views.generic.edit.DeletionMixin`](/sv/6.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.DeletionMixin)
- [`django.views.generic.edit.FormMixin`](/sv/6.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin)
- [`django.views.generic.detail.BaseDetailView`](/sv/6.0/ref/class-based-views/generic-display/#django.views.generic.detail.BaseDetailView)
