Python
 Computer >> コンピューター >  >> プログラミング >> Python

DjangoのDeleteViewでデータを削除する方法を実装例つきで解説

DjangoのDeleteViewとは?

DeleteViewは、Djangoに標準で組み込まれている汎用クラスビューの一つで、フロントエンド(画面)からモデルのデータを削除するために使います。管理サイト(admin)のように確認画面を挟んでレコードを削除できるため、少ないコード量で安全な削除機能を実装でき、実務のプロジェクトでも非常に役立ちます。

まず、Djangoプロジェクトとアプリを作成してください。この記事では、プロジェクト名を「tutorial11」、アプリ名を「modelFormsDemo」として進めます。

基本設定

最初に基本設定を行います。settings.py の INSTALLED_APPS に作成したアプリを追加しましょう。

INSTALLED_APPS = [
    'modelFormsDemo',
]

続いて、プロジェクトの urls.py を以下のように編集し、アプリ側のURLを読み込みます。

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('modelFormsDemo.urls')),
]

ここでアプリのURL設定を取り込んでいます。次に、アプリの urls.py を以下のように記述します。

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name="home"),
    path('student/delete/<int:pk>/', views.StudentDeleteView.as_view(), name="delete"),
    path('success/', views.success, name='success'),
]

ここでは3つのURLを定義しています。1つ目はトップページの表示、2つ目は削除処理用のDeleteView、3つ目は削除成功後のリダイレクト先です。

実装例

モデルの作成

models.py に以下のモデルを追加します。

from django.db import models

# Create your models here.
class Student(models.Model):
    name = models.CharField(max_length=100)
    standard = models.CharField(max_length=100)
    section = models.CharField(max_length=100)

ここではシンプルなStudent(生徒)モデルを作成しました。忘れずにマイグレーションを実行して、テーブルをデータベースへ反映しておきましょう。

フォームの作成

アプリディレクトリ直下に forms.py を新規作成し、以下を記述します。

from django import forms
from .models import Student

class StudentForm(forms.ModelForm):
    class Meta:
        model = Student
        fields = ['name', 'standard', 'section']

homeビューで表示するためのシンプルなModelFormです。

ビューの作成

views.py に以下のコードを追加します。

from django.shortcuts import render
from .forms import StudentForm
from django.views.generic.edit import DeleteView
from .models import Student
from django.urls import reverse_lazy

# Create your views here.
def home(request):
    if request.method == 'POST':
        form = StudentForm(request.POST)
        if form.is_valid():
            form.save()
    stuForm = StudentForm()
    return render(request, 'home.html', {"stu_form": stuForm})

class StudentDeleteView(DeleteView):
    model = Student
    template_name = 'delete_view.html'
    success_url = reverse_lazy("success")

homeビューではフロントエンドの描画を行い、StudentDeleteViewでは削除確認用の delete_view.html を表示します。success_urlには reverse_lazy を使い、削除完了後にリダイレクトされるページを指定しています。

テンプレートの作成

アプリディレクトリ内に templates フォルダを作成し、その中に home.htmldelete_view.htmlsuccess.html の3つのファイルを配置します。

home.html

<!DOCTYPE html>
<html>
<head>
<title>TUT</title>
</head>
<body>
{% for fm in stu_form %}
<form method="post">
{%csrf_token%}
{{fm.errors}}<br>
{{fm.label}}:{{fm}}<br>
{%endfor%}
<button type="submit">送信</button>
</form>
</body>
</html>

delete_view.html

<!DOCTYPE html>
<html>
<head>
<title>TUT</title>
</head>
<body>
<form method="post">{% csrf_token %}
<p>「{{ object }}」を本当に削除しますか?</p>
<input type="submit" value="削除する">
</form>
</body>
</html>

success.html

<!DOCTYPE html>
<html>
<head>
<title>TUT</title>
</head>
<body>
<h2>削除が完了しました</h2>
</body>
</html>

これら3つはすべてHTMLテンプレートファイルです。home.htmlは生徒情報の登録用、delete_view.htmlは削除確認用、success.htmlは削除後のリダイレクト先として使用します。

動作確認

準備が整ったら、開発サーバーを起動して動作を確認してみましょう。

home.html

DjangoのDeleteViewでデータを削除する方法を実装例つきで解説

https://127.0.0.1:8000/student/delete/(対象オブジェクトのID)/ にアクセスすると、削除確認画面の delete_view.html が表示されます。

delete_view.html

DjangoのDeleteViewでデータを削除する方法を実装例つきで解説

「削除する」ボタンをクリックすると該当レコードが削除され、successページへリダイレクトされます。これでDeleteViewによる削除機能の実装は完了です。

  1. DjangoモデルにJSONフィールドを追加する方法【django-jsonfield活用ガイド】

    この記事では、DjangoのモデルにJSONフィールドを追加する方法を解説します。JSONはキーと値のペアでデータを保存できるシンプルなフォーマットで、波括弧({})で記述されます。開発者向けサイトなどでは、柔軟な構造のデータを扱う場面が多く、そうしたケースでJSONフィールドは非常に役立ちます。事前準備まず、Djangoプロジェクトとアプリを作成しましょう。アプリをINSTALLED_APPSに追加し、URLの設定を行い、基本的なモデルを作成してHTMLファイル上にフォームを表示できるようにしておいてください。django-jsonfieldパッケージのインストール以下のコマンドでdjang

  2. Edgeブラウザのお気に入りをHTMLファイルでインポート・エクスポートする手順を解説

    別のブラウザに乗り換える際、Edgeのお気に入り(ブックマーク)をそのまま引き継げると非常に便利です。実はMicrosoft Edgeには、お気に入りをHTMLファイルとしてインポート・エクスポートする機能が標準で搭載されています。この記事では、その具体的な操作方法をわかりやすく解説します。 Edgeのお気に入りをHTMLファイルにバックアップ・復元するメリット お気に入り(ブックマーク)とは、よく訪れるWebページをブラウザに保存し、ワンクリックですぐにアクセスできるようにする機能です。これを他のブラウザでも利用できるようにしておけば、時間と手間を大幅に節約できます。 Chromium版Mi