【Django】deleteメソッドで削除ページの作成|実例付

Django

(最終更新月:2021年11月)

「データベースの既存データを削除するページが作りたい!」

「Pythonコードでデータを削除するにはどうするの?」

というお考え、疑問をお持ちのDjango初学者の方向けの記事となります

当記事を通じて、

  • 特定のデータを削除するページを作成する方法

について解説していきます

  1. URLから「pk」を受け取る
  2. 特定のオブジェクトをget_object_or_404で取り出す

方法が既にご存知である前提で話を進めていきます

✔月9,800円でWebデザインが学べる

デザナルは、Webデザインに苦手意識がある方におすすめのサブスク型スクールです。

特徴は以下の通り。

  • 初期費用不要
  • 教材が使い放題
  • 案件で収入も得られる

デザナルは稼ぎながら学べる、格安のWebデザインスクールです。

>>詳細はこちら<<

安いWebデザインスクール「デザナル」を徹底分析

削除を確認するページの作成

データを削除する時には確認画面を一度挟むのが無難です

下記の機能を持ったページを作っていきます

  1. 削除して良いかを確認する
  2. 削除を実行する

シンプルですが、こんなページを作っていきます

【nippo-delete.html】

{% extends "base.html" %}

{% block content %}
<form method="post">{% csrf_token %}
    <p>削除しますと復旧ができません。よろしいですか?</p>
    <input type="submit" value="削除する">
</form>
{% endblock %}

【views.py】

まずはページを表示するための記述です

def nippoDeleteView(request, pk):
    template_name = "nippo/nippo-delete.html"
    obj = get_object_or_404(NippoModel, pk=pk)
    ctx = {"object": obj}
    return render(request, template_name, ctx)

【urls.py】

...
from .views import ..., nippoDeleteView

urlpatterns = [
  ...
  path("delete/<int:pk>/", nippoDeleteView, name="nippo-delete"),
]

以上で表示までは完了です

次章にて、views関数で取得したデータを削除する記述を加えていきます

データを削除する「deleteメソッド」

データを削除するには、

データオブジェクト.delete()

を実行します

【コード例】

from django.shortcuts import render, get_object_or_404

def nippoDeleteView(request, pk):
    template_name = "nippo/nippo-delete.html"
    obj = get_object_or_404(NippoModel, pk=pk)
    ctx = {"object": obj}
    if request.POST:
        obj.delete()
    return render(request, template_name, ctx)

以上で削除の実行についての記述は完了です

実行してみましょう!

①リストページへアクセスします

http://localhost:8000/nippo/

4つのオブジェクトが保存されているのがわかります

②特定のデータを削除するページへ進みます

http://localhost:8000/nippo/delete/5/

一番最後のデータを削除します

③「削除する」ボタンをクリック

http://localhost:8000/nippo/delete/5/

クリックしても画面に変化はありませんが、、

④ページをリロードしてみます

http://localhost:8000/nippo/delete/5/

404ページの表示、つまりページが存在しないと返ってきます

⑤再度リストページへアクセスすると、

http://localhost:8000/nippo/

最後のデータが削除されていることがわかります!

まとめ

Djangoフレームワークを使ってデータの削除ページを作るには、

  1. HTMLテンプレートで確認用のページを作成
  2. view関数でPOST送信の際にdeleteメソッドを実行

するよう記述しましょう

ただ、お気づきの通り削除は無事実行できましたが、実行後のページ移行に違和感がありました

次回はこの違和感を修正すべく、ページのリダイレクトについて解説をしていきます

当ブログでは、日報アプリ開発を通じて、Webアプリを一から開発し公開するまでを初学者の方でもわかるようにと記事を連載しています

「Djangoでのアプリ開発を学びたい!」
「Djangoで開発したアプリをWebで公開するにはどうするの?」

という方は必見です!

【Django】チュートリアル|日報アプリの開発から公開まで
Djangoのチュートリアルをお探しですか?具体的に「手を動かして作ってみたい!」という方へ向けて、誰でもできる簡易的な日報アプリの開発を通じて、Djangoの様々な機能に触れていくシリーズとなっています。PythonでWebアプリを作りたい方、必見の記事となります!

公式LINEも始めました。ブログの更新や最新の業界情報などを随時配信します!

友だち追加

タイトルとURLをコピーしました