DjangoでTODOリストを作ろう!その4:タスクを削除しよう

前回の記事では、タスクを編集する方法について学びました。

関連記事

前回の記事では、タスクを追加する方法について学びました。 [sitecard subtitle=関連記事 url=https://freemas.stepupkaraoke.com/python/django/making-todol[…]

IMG

今回は、追加したタスクの内容を削除する方法について解説します。
この記事を読んで取り組むことで、以下を習得することができます。

  • DjangoクラスベースビューのDeleteViewの使い方

本記事でも、クラスベースビューを用いてタスクの削除処理をさっくりと実装していきます。
今回はかなり短いので、さっくりと実装、理解して次の記事へのモチベーションが高まれば幸いです。

DjangoでTODOリストを作ろう!その4:タスクを削除しよう

タスク削除用のurls.pyを作成する

今回もModelは更新しないので、urls.py→View→Templateの順で作成していきます。

djangotodo/urls.pyにタスク削除用のURLを設定しましょう。以下のように追記してください。

URLはタスクの更新処理と非常に似ています。URLでデータのプライマリキーを渡すことで、データの削除処理を走らせています。

名前はtask_deleteとなっています。次に、Viewsにタスク削除処理を入れていきましょう。

タスク削除処理を、Djangoのviews.pyに追記する

続いてタスク削除処理をviews.pyに実装します。こちらも記述量は少なめです。

TaskDeleteクラスを、クラスベースビューのDeleteViewを継承することで作成しています。
記載量はかなり少なく、データを削除するデータベースのテーブルをmodelで指定しています。

さらに削除処理が成功した場合に、どのページに遷移するかを記載しています。
この場合はリスト一覧画面で削除して、削除後に同じページに戻るようにしています。

たった2行書くだけで削除処理が実装できるのは、楽でいいですね。

タスク削除のためにテンプレートを変更する

最後にテンプレートを編集します。前回の記事で扱ったUpdateViewとは違い、DeleteViewには専用のページは不要です。

そのため今回は「task_list.html」を一部修正して削除機能を実装します。

task_list.html
1.削除用form

これまでは全く機能しない削除ボタンでしたが、その周りをformタグで囲んでいます。
action属性には削除用のURLを設定し、それにtask.idを渡しています。

task.idはリスト表示したタスクのidを数字で表示します。
それぞれのタスクのidは固有のものなので、対象となるデータのみが削除される形になります。

例えば16番目のデータを削除する場合、上記のactionの指定したURLは「djangotodo/16/delete」のようになります。

2.CSRFトークン

以前にタスク追加でも説明したセキュリティ対策用のタグですね。
ここではボタンを押すだけなのですが、formである以上は記載するようにしましょう。

タスクが削除できるか確認しよう!

さっくりと実装できたところで、環境にアクセスして削除ボタンを押してみましょう。

ここでは一番上の「タスク2」を削除してみます。
削除警告のアラートでOKボタンを押して、以下のようにタスクが削除されれば完璧です。

おわりに

削除処理に関してはどのプログラミングでもコード量は少なくなりがちです。
ですがDjangoのクラスベースビューを使用するとさらに少なくなるのが分かると思います。

クラスベースビューの強みがよく分かる内容でしたね。
さて前回と同じくここまでのソースはGithubに掲載しておくので、もしも見返したい場合は確認してみてください。

Githubリンク(TODOリストータスク削除)

さて、次回は少し難易度を上げて、「タスクの完了」を扱っていきましょう。

関連記事

前回の記事では、タスクの編集フォームを作成しました。 [sitecard subtitle=関連記事 url=https://freemas.stepupkaraoke.com/python/django/making-todolis[…]

IMG