# Django 4.1.8.dev20230308103347 ドキュメント

# Generic editing ビュー

以下のビューは、このページで説明され、内容を編集するための基礎を提供します:

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

参考

The messages framework contains `SuccessMessageMixin`, which facilitates presenting messages about successful form submissions.

注釈

このページの例のいくつかは、`Author` モデルが下記の通り `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`

  フォームを描画するビューです。エラー時には、バリデーションエラーとともにフォームを再描画します。成功時には、新しい URL にリダイレクトします。

  継承元 (MRO)

  このメソッドは、以下のビューからメソッドと属性を継承しています:

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

  例 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

  Example 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)

  例 myapp/forms.py:

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

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

  A base view for displaying a form. It is not intended to be used directly, but rather as a parent class of the `django.views.generic.edit.FormView` or other views displaying a form.

  継承元 (MRO)

  このメソッドは、以下のビューからメソッドと属性を継承しています:

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

## `CreateView`

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

  オブジェクトの作成、(もしある場合は) バリデーションエラーとフォームの再描画、そしてオブジェクトの保存のフォームを表示するビューです。

  継承元 (MRO)

  このメソッドは、以下のビューからメソッドと属性を継承しています:

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

  属性

  `template_name_suffix`

    `GET` リクエストに描画された `CreateView` のページは、`'_form'` の `template_name_suffix` を使います。 例えば、この属性をオブジェクト (例えば `Author` モデル) を作成するビューのために `'_create_form'` に変更すると、 デフォルトの `template_name` は `'myapp/author_create_form.html'` となります。

  `object`

    `CreateView` を使うとき、`self.object` にアクセスできます。これは作成されているオブジェクトです。オブジェクトがまだ作成されていない場合、値は `None` になります。

  Example myapp/views.py:

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

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

  例 myapp/author_form.html:

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

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

  A base view for creating a new object instance. It is not intended to be used directly, but rather as a parent class of the `django.views.generic.edit.CreateView`.

  継承元 (MRO)

  このメソッドは、以下のビューからメソッドと属性を継承しています:

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

  メソッド

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

    Sets the current object instance (`self.object`) to `None`.

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

    Sets the current object instance (`self.object`) to `None`.

## `UpdateView`

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

  現存するオブジェクトの編集、(もしある場合は) バリデーションエラーとフォームの再描画、そしてオブジェクトの保存のフォームを表示するビューです。(フォームのクラスが手動で指定されていない限り) オブジェクトのモデルのクラスから自動的に生成されたフォームを使います。

  継承元 (MRO)

  このメソッドは、以下のビューからメソッドと属性を継承しています:

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

  属性

  `template_name_suffix`

    `GET` リクエストに描画された `UpdateView` のページは、`'_form'` の `template_name_suffix` を使います。 例えば、この属性をオブジェクト (例えば `Author` モデル) を作成するビューのために `'_update_form'` に変更すると、 デフォルトの `template_name` は `'myapp/author_update_form.html'` となります。

  `object`

    `UpdateView` を使うとき、`self.object` にアクセスできます。これは更新されているオブジェクトです。

  Example 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'

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

  A base view for updating an existing object instance. It is not intended to be used directly, but rather as a parent class of the `django.views.generic.edit.UpdateView`.

  継承元 (MRO)

  このメソッドは、以下のビューからメソッドと属性を継承しています:

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

  メソッド

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

    Sets the current object instance (`self.object`).

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

    Sets the current object instance (`self.object`).

## `DeleteView`

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

  確認ページを表示して、現存するオブジェクトを削除するビューです。与えられたオブジェクトは、リクエストメソッドが `POST` の場合、単に削除されます。もしこのビューが `GET` を通じて取得された場合は、同じ URL に POST するフォームを含む確認画面を表示します。

  継承元 (MRO)

  このメソッドは、以下のビューからメソッドと属性を継承しています:

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

  属性

  `form_class`
    New in Django 4.0.

    Inherited from `BaseDeleteView`. The form class that will be used to confirm the request. By default `django.forms.Form`, resulting in an empty form that is always valid.

    By providing your own `Form` subclass, you can add additional requirements, such as a confirmation checkbox, for example.

  `template_name_suffix`

    `GET` リクエストに描画された `DeleteView` のページは、`'_confirm_delete'` の `template_name_suffix` を使います。 例えば、この属性をオブジェクト (例えば `Author` モデル) を作成するビューのために `'_check_delete'` に変更すると、 デフォルトの `template_name` は `'myapp/author_check_delete.html'` となります。

  Example 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')

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

  A base view for deleting an object instance. It is not intended to be used directly, but rather as a parent class of the `django.views.generic.edit.DeleteView`.

  継承元 (MRO)

  このメソッドは、以下のビューからメソッドと属性を継承しています:

  - `django.views.generic.edit.DeletionMixin`
  - `django.views.generic.edit.FormMixin`
  - `django.views.generic.detail.BaseDetailView`
  Changed in Django 4.0:

  In older versions, `BaseDeleteView` does not inherit from `FormMixin`.