【初心者のDjango Web開発】確認ダイアログを表示する

Javascriptのconfirm("are you sure?")で確認ダイアログを作成する事が多いですが、Djangoの開発でも同じことがJavascriptを使わずとも、Python標準のtkinterを使えば簡単に確認ダイアログを出すことができます。

アプリのフォルダ構成

今回は確認ダイアログを出す方法を紹介するだけですが、どのような使われ方をしているのか理解しやすいように、アプリの簡単な構成について説明します。

アプリのフォルダ構成

  1. djangoのプロジェクト名は「fumProj」です。
    django-admin startproject fumProj
  2. その下にdjangoアプリ「myblog」を作成。
    python manage.py startapp myblog
  3. 「myblog」の中にtemplatesフォルダを作成。
  4. 「myblog」の中に"forms.py"や"models.py"、"urls.py"、"views.py"があります。

views.pyの実装

いつもの通り、urls.pyでパスの指定をしてから、views.pyでその処理を実装します。views.pyにはtkinterをimportします。

fumProj/myblog/views.py

from django.shortcuts import   render,  redirect
from django.views import   View
import  tkinter as tk
import  tkinter.messagebox as msgbox

# 削除処理
class PostDeleteView(View):
    def get(self, request, id):
        post = Post.objects.get(id=id)
       # --確認ダイアログはここから↓--
        tk.Tk().withdraw()
        ans=msgbox.askokcancel('確認',f'「{post.title}」を削除しますか')
        # --ここまで↑--
        if ans:
            post.delete()
        return redirect('post_index')


post_delete = PostDeleteView.as_view()

実行画面

投稿リストから右側の[削除]ボタンをクリックすると、削除する前に確認ダイアログが出て、「OK」か「Cancel」を選ぶことができるようになります。

実行画面

以上です。

Follow me!