入門クラス

【Django】UpdateViewとは

Djangoには CreateView に並ぶ編集を担当するView、UpdateView というMixinがあります。

ですのでこの記事では、Djangoにおける UpdateView について解説します。

それはなにか

UpdateViewはモデルと連携して、データの更新を請け負います。

通常のウェブサイトでは、フォームを使用してユーザーからのデータを受け取ります。

UpdateViewは受け取ったデータを精査して、モデルに設定されたフィールドに適したデータなのを確認します。

保存するのに支障がなければ保存をモデルに依頼します。

保存が成功すると、success_urlで設定されたURLか、get_success_urlメソッドで返されたURLに移動します。

どんないいことがあるのか

CreateViewと同様です。

  • モデルにを定義した段階で、すでにバリデーションの条件を記載したことになりますので、いちいちバリデーション内容を記述する必要がありません。
  • fieldsによって受け入れるフィールドを設定できるため、IDなどを上書きしようとする攻撃に対応しています。
  • formを作成、設定することでフォーム自体をカスタマイズすることができます。
  • 新規作成の成功・失敗に応じて呼ばれるメソッドをオーバーライドして独自のフックを追加することが可能です。

使い方

モデルはこんな感じだと思ってください。

from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()

from django.views.generic import UpdateView

from .models import Article

class ArticleUpdateView(UpdateView):
    model = Article
    fields = ['title', 'content', ]
    success_url = "/"

このようになります。

fieldsは送られてきたデータの中で、ここに指定されたフィールドのデータを処理します。

テンプレートでは、自動で生成される変数formを使用します。

<form method="post">
{% csrf_token %}
    {{ form }}
</form>

注意点

デフォルトだとCreateViewと同じテンプレートを使うことになりますので、もし内容に変更を加えたい場合はひと手間必要になります。

まとめ

UpdateViewはよく使うビューの中の一つだと思います。

といっても難しい事はありません。

-入門クラス
-,