# dokumentasi Django 2.0.8

# Tampilan penyuntingan umum

Tampilan berikut digambarkan pada halaman ini dan menyediakan sebuah dasar untuk menyunting isi:

- `django.views.generic.edit.FormView`
- `django.views.generic.edit.CreateView`
- `django.views.generic.edit.UpdateView`
- `django.views.generic.edit.DeleteView`

Catatan

Beberapa dari contoh-contoh pada halaman ini menganggap bahwa sebuah model `Author` telah ditentukan sebagai berikut di `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`

  Sebuah tampilan yang memperlihatkan sebuah formulir. Pada kesalahan, memperlihatkan kembali formulir dengan pengesahan kesalahan; pada pengalihan sukses ke URL baru.

  Ancestors (MRO)

  Tampilan ini mewarisi metode dan atribut dari tampilan berikut:

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

  Contoh 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

  Contoh myapp/views.py:

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

      class ContactView(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)

  Contoh myapp/contact.html:

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

## `CreateView`

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

  Sebuah tampilan yang menampilkan sebuah formulir untuk membuat sebuah obyek, memperlihatkan kembali formulir dengan pengesahan kesalahan (jika ada) dan menyimpan obyek.

  Ancestors (MRO)

  Tampilan ini mewarisi metode dan atribut dari tampilan berikut:

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

  Atribut

  `template_name_suffix`

    Halaman `CreateView` diperlihatkan ke permintaan `GET` menggunakan `template_name_suffix` dari `'_form'`. Sebagai contoh, merubah atribut ini pada `'_create_form'` untuk sebuah tampilan membuat obyek-obyek untuk contoh model `Author` akan menyebabkan awalan `template_name` menjadi `'myapp/author_create_form.html'`.

  `object`

    Ketika menggunakan `CreateView` anda mempunyai akses ke `self.object`, yaitu obyek sedang dibuat. Jika obyek belum dibuat, nilai akan menjadi `None`.

  Contoh myapp/views.py:

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

      class AuthorCreate(CreateView):
          model = Author
          fields = ['name']

  Contoh myapp/author_form.html:

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

## `UpdateView`

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

  Sebuah tampilan yang memperlihatkan sebuah formulir untuk menyunting sebuah obyek yang ada, memperlihatkan kembali formulir dengan pengesahan kesalahan (jika ada) dan menyimpan perubahan ke obyek. Ini menggunakan sebuah formulir secara otomatis dibangkitkan dari kelas model obyek (meskipun sebuah kelas formulir secara manual ditentukan).

  Ancestors (MRO)

  Tampilan ini mewarisi metode dan atribut dari tampilan berikut:

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

  Atribut

  `template_name_suffix`

    Halaman `UpdateView` diperlihatkan ke permintaan `GET` menggunakan `template_name_suffix` dari `'_form'`. Sebagai contoh, merubah atribut ini pada `'_update_form'` untuk sebuah tampilan membuat obyek-obyek untuk contoh model `Author` akan menyebabkan awalan `template_name` menjadi `'myapp/author_update_form.html'`.

  `object`

    Ketika menggunakan `UpdateView` anda mempunyai akses ke `self.object`, yaitu obyek sedang diperbaharui.

  Contoh myapp/views.py:

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

      class AuthorUpdate(UpdateView):
          model = Author
          fields = ['name']
          template_name_suffix = '_update_form'

  Contoh myapp/author_update_form.html:

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

## `DeleteView`

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

  Sebuah tampilan yang memperlihatkan sebuah halaman penegasan dan menghapus obyek yang ada. Obyek yang diberikan akan hanya dihapus jika metode permintaan adalah `POST`. Jika tampilan ini diambil melalui `GET`, itu akan memperlihatkan sebuah halaman penegasan yang harus mengandung sebuah formulir yang POST ke URL sama.

  Ancestors (MRO)

  Tampilan ini mewarisi metode dan atribut dari tampilan berikut:

  - `django.views.generic.detail.SingleObjectTemplateResponseMixin`
  - `django.views.generic.base.TemplateResponseMixin`
  - `django.views.generic.edit.BaseDeleteView`
  - `django.views.generic.edit.DeletionMixin`
  - `django.views.generic.detail.BaseDetailView`
  - `django.views.generic.detail.SingleObjectMixin`
  - `django.views.generic.base.View`

  Atribut

  `template_name_suffix`

    Halaman `DeleteView` diperlihatkan ke permintaan `GET` menggunakan `template_name_suffix` dari `'_confirm_delete'`. Sebagai contoh, merubah atribut ini pada `'_check_delete'` untuk sebuah tampilan membuat obyek-obyek untuk contoh model `Author` akan menyebabkan awalan `template_name` menjadi `'myapp/author_check_delete.html'`.

  Contoh myapp/views.py:

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

      class AuthorDelete(DeleteView):
          model = Author
          success_url = reverse_lazy('author-list')

  Contoh myapp/author_confirm_delete.html:

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