一般的な編集ビュー—Djangoドキュメント
一般的な編集ビュー
このページでは、次のビューについて説明し、コンテンツを編集するための基盤を提供します。
django.views.generic.edit.FormViewdjango.views.generic.edit.CreateViewdjango.views.generic.edit.UpdateViewdjango.views.generic.edit.DeleteView
ノート
このページのいくつかの例は、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)
このビューは、次のビューからメソッドと属性を継承します。
例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 :
<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 またはフォームを表示する他のビューの親クラスとして使用することを目的としています。
祖先(MRO)
このビューは、次のビューからメソッドと属性を継承します。
CreateView
- class django.views.generic.edit.CreateView
オブジェクトを作成し、検証エラー(存在する場合)を含むフォームを再表示し、オブジェクトを保存するためのフォームを表示するビュー。
祖先(MRO)
このビューは、次のビューからメソッドと属性を継承します。
属性
- 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 :
<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 の親クラスとして使用することを目的としています。
祖先(MRO)
このビューは、次のビューからメソッドと属性を継承します。
メソッド
- get(request, *args, **kwargs)
現在のオブジェクトインスタンス(
self.object)をNoneに設定します。
- post(request, *args, **kwargs)
現在のオブジェクトインスタンス(
self.object)をNoneに設定します。
UpdateView
- class django.views.generic.edit.UpdateView
既存のオブジェクトを編集し、検証エラー(存在する場合)を使用してフォームを再表示し、オブジェクトへの変更を保存するためのフォームを表示するビュー。 これは、オブジェクトのモデルクラスから自動的に生成されたフォームを使用します(フォームクラスが手動で指定されている場合を除く)。
祖先(MRO)
このビューは、次のビューからメソッドと属性を継承します。
属性
- 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 :
<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 の親クラスとして使用することを目的としています。
祖先(MRO)
このビューは、次のビューからメソッドと属性を継承します。
メソッド
- get(request, *args, **kwargs)
現在のオブジェクトインスタンスを設定します(
self.object)。
- post(request, *args, **kwargs)
現在のオブジェクトインスタンスを設定します(
self.object)。
DeleteView
- class django.views.generic.edit.DeleteView
確認ページを表示し、既存のオブジェクトを削除するビュー。 指定されたオブジェクトは、リクエストメソッドが
POSTの場合にのみ削除されます。 このビューがGETを介してフェッチされると、同じURLにPOSTするフォームを含む確認ページが表示されます。祖先(MRO)
このビューは、次のビューからメソッドと属性を継承します。
属性
- 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 :
<form method="post">{% csrf_token %} <p>Are you sure you want to delete "{{ object }}"?</p> <input type="submit" value="Confirm"> </form>
- class django.views.generic.edit.BaseDeleteView
オブジェクトインスタンスを削除するためのベースビュー。 直接使用することを意図したものではなく、 django.views.generic.edit.DeleteView の親クラスとして使用することを目的としています。
祖先(MRO)
このビューは、次のビューからメソッドと属性を継承します。