---
title: "ジェネリック編集ビュー (Generic editing view)"
version: 5.0
locale: ja
source: https://docs.djangoproject.com/ja/5.0/ref/class-based-views/generic-editing/
canonical: https://djangodocs.dev/ja/5.0/ref/class-based-views/generic-editing/
---
# ジェネリック編集ビュー (Generic editing view)

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

- [`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**
>
> [メッセージフレームワーク](/ja/5.0/ref/contrib/messages/) には [`SuccessMessageMixin`](/ja/5.0/ref/contrib/messages/#django.contrib.messages.views.SuccessMessageMixin) が含まれており、フォーム送信の成功に関するメッセージを表示できます。

> **Note**
>
> このページの例のいくつかは、`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`](/ja/5.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`](/ja/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin)
- [`django.views.generic.edit.ProcessFormView`](/ja/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView)
- [`django.views.generic.base.View`](/ja/5.0/ref/class-based-views/base/#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
```

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

フォームを表示するための基本ビューです。直接使用するのではなく、 [`django.views.generic.edit.FormView`](#django.views.generic.edit.FormView) やフォームを表示する他のビューの親クラスとして使用することを想定しています。

**継承元 (MRO)**

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

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

## `CreateView`

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

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

**継承元 (MRO)**

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

- [`django.views.generic.detail.SingleObjectTemplateResponseMixin`](/ja/5.0/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectTemplateResponseMixin)
- [`django.views.generic.base.TemplateResponseMixin`](/ja/5.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`](/ja/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ModelFormMixin)
- [`django.views.generic.edit.FormMixin`](/ja/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin)
- [`django.views.generic.detail.SingleObjectMixin`](/ja/5.0/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin)
- [`django.views.generic.edit.ProcessFormView`](/ja/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView)
- [`django.views.generic.base.View`](/ja/5.0/ref/class-based-views/base/#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` になります。

**例 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**:

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

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

新しいオブジェクトのインスタンスを作成するためのベースビューです。直接使用するのではなく、 [`django.views.generic.edit.CreateView`](#django.views.generic.edit.CreateView) の親クラスとして使用することを想定しています。

**継承元 (MRO)**

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

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

**メソッド**

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

現在のオブジェクトインスタンス (`self.object`) に `None` をセットします。

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

現在のオブジェクトインスタンス (`self.object`) に `None` をセットします。

## `UpdateView`

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

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

**継承元 (MRO)**

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

- [`django.views.generic.detail.SingleObjectTemplateResponseMixin`](/ja/5.0/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectTemplateResponseMixin)
- [`django.views.generic.base.TemplateResponseMixin`](/ja/5.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`](/ja/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ModelFormMixin)
- [`django.views.generic.edit.FormMixin`](/ja/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin)
- [`django.views.generic.detail.SingleObjectMixin`](/ja/5.0/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin)
- [`django.views.generic.edit.ProcessFormView`](/ja/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView)
- [`django.views.generic.base.View`](/ja/5.0/ref/class-based-views/base/#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` にアクセスできます。これは更新されているオブジェクトです。

**例 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**:

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

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

既存のオブジェクトインスタンスを更新するためのベースビューです。直接使用するのではなく、 [`django.views.generic.edit.UpdateView`](#django.views.generic.edit.UpdateView) の親クラスとして使用することを想定しています。

**継承元 (MRO)**

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

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

**メソッド**

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

現在のオブジェクトインスタンス (`self.object`) をセットします。

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

現在のオブジェクトインスタンス (`self.object`) をセットします。

## `DeleteView`

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

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

**継承元 (MRO)**

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

- [`django.views.generic.detail.SingleObjectTemplateResponseMixin`](/ja/5.0/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectTemplateResponseMixin)
- [`django.views.generic.base.TemplateResponseMixin`](/ja/5.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`](/ja/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.DeletionMixin)
- [`django.views.generic.edit.FormMixin`](/ja/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin)
- [`django.views.generic.base.ContextMixin`](/ja/5.0/ref/class-based-views/mixins-simple/#django.views.generic.base.ContextMixin)
- [`django.views.generic.detail.BaseDetailView`](/ja/5.0/ref/class-based-views/generic-display/#django.views.generic.detail.BaseDetailView)
- [`django.views.generic.detail.SingleObjectMixin`](/ja/5.0/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin)
- [`django.views.generic.base.View`](/ja/5.0/ref/class-based-views/base/#django.views.generic.base.View)

**属性**

#### `form_class`

[`BaseDeleteView`](#django.views.generic.edit.BaseDeleteView) から継承されています。リクエストの確認に使用するフォームクラスです。デフォルトでは [`django.forms.Form`](/ja/5.0/ref/forms/api/#django.forms.Form) で、常に有効な空のフォームになります。

独自の `Form` サブクラスを提供することで、例えば確認のチェックボックスのような要件を追加できます。

#### `template_name_suffix`

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

**例 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**:

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

オブジェクトインスタンスを削除するためのベースビューです。直接使用するのではなく、 [`django.views.generic.edit.DeleteView`](#django.views.generic.edit.DeleteView) の親クラスとして使用することを想定しています。

**継承元 (MRO)**

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

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