UpdateView


それはなにか

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

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

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

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

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

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

CreateViewと同様です。

  • モデルにを定義した段階で、すでにバリデーションの条件を記載したことになりますので、いちいちバリデーション内容を記述する必要がありません。

  • fieldsによって受け入れるフィールドを設定できるため、IDなどを上書きしようとする攻撃に対応しています。

  • formを作成、設定することでフォーム自体をカスタマイズすることができます。

  • 新規作成の成功・失敗に応じて呼ばれるメソッドをオーバーライドして独自のフックを追加することが可能です。

使い方

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はよく使うビューの中の一つだと思います。

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


初稿: 2019年11月25日22:29 | 最終編集: 2019年11月25日22:33