# Django 5.2.8 documentation

# 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.CreateView`

- `django.views.generic.edit.UpdateView`

- `django.views.generic.edit.DeleteView`

Se även

Ramverket messages innehåller `SuccessMessageMixin`, som underlättar presentationen av meddelanden om lyckade formulärinlämningar.

Observera

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`

  - `django.views.generic.edit.BaseFormView`

  - `django.views.generic.edit.FormMixin`

  - `django.views.generic.edit.ProcessFormView`

  - `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:

      <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` 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`

  - `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`

  - `django.views.generic.base.TemplateResponseMixin`

  - `django.views.generic.edit.BaseCreateView`

  - `django.views.generic.edit.ModelFormMixin`

  - `django.views.generic.edit.FormMixin`

  - `django.views.generic.detail.SingleObjectMixin`

  - `django.views.generic.edit.ProcessFormView`

  - `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:

      <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`.

  Ancestors (MRO)

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

  - `django.views.generic.edit.ModelFormMixin`

  - `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`

  - `django.views.generic.base.TemplateResponseMixin`

  - `django.views.generic.edit.BaseUpdateView`

  - `django.views.generic.edit.ModelFormMixin`

  - `django.views.generic.edit.FormMixin`

  - `django.views.generic.detail.SingleObjectMixin`

  - `django.views.generic.edit.ProcessFormView`

  - `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:

      <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`.

  Ancestors (MRO)

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

  - `django.views.generic.edit.ModelFormMixin`

  - `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`

  - `django.views.generic.base.TemplateResponseMixin`

  - `django.views.generic.edit.BaseDeleteView`

  - `django.views.generic.edit.DeletionMixin`

  - `django.views.generic.edit.FormMixin`

  - `django.views.generic.base.ContextMixin`

  - `django.views.generic.detail.BaseDetailView`

  - `django.views.generic.detail.SingleObjectMixin`

  - `django.views.generic.base.View`

  Attribut

  form_class

    Ärvd från `BaseDeleteView`. Den formulärklass som kommer att användas för att bekräfta begäran. Som standard `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:

      <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`.

  Ancestors (MRO)

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

  - `django.views.generic.edit.DeletionMixin`

  - `django.views.generic.edit.FormMixin`

  - `django.views.generic.detail.BaseDetailView`