Python | プログラミング学習 Djang.[在庫管理] #04.04.05 DeleteView

django004.04.05

PythonのWebアプリケーションフレームワーク”Django”について無料で学習します。
今回は”DeleteView”クラスについて学習します。

“DeleteView”クラスは継承する事によってモデルクラスへデータ削除することができます。

準備

※仮想環境”venv”にて進めます。

環境

環境version備考(コマンド)
Rocky Linux8.4cat /etc/redhat-release
Python3.6.8python -V
Django3.2django-admin –version

開発

urls

path("order/delete/<int:pk>/<int:userid>", views.OrderDelete.as_view(), name="orderDelete",)
path('userTrade/delete/<int:pk>/',views.UserDelete.as_view(), name='userTradeDelete')
orderPro/orderApp/urls.py
from django.urls import path

# view.pyをインポート
from . import views

# path(呼び出しアドレス, viewの呼び出す関数, path名)
urlpatterns = [
    path("", views.Index.as_view(), name="index"),
    path('userTrade/delete/<int:pk>/',views.UserDelete.as_view(), name='userTradeDelete'),          # ユーザー削除
    path("order/delete/<int:pk>/<int:userid>", views.OrderDelete.as_view(), name="orderDelete",),   # 注文更新
]
model = models.userTrade

views

UpdateViewクラスを継承します。

models.orderItem , models.userTradeクラスを登録します。

model = models.orderItem
model = models.userTrade
orderPro/orderApp/views.py
# 注文削除
class OrderDelete(DeleteView):
    # orderItemテーブル連携
    model = models.orderItem
    # テンプレートファイル連携
    template_name = "AppHTML/order_delete.html"

    # 削除後のリダイレクト先
    def get_success_url(self, **kwargs):
        # 関数の中で解決する場合はreverse
        self.targetUser = self.kwargs.get("userid")
        return reverse("orderDetail", kwargs={"pk": self.targetUser})

    def get_context_data(self, **kwargs):
        self.targetUser = self.kwargs.get("userid")
        context = super().get_context_data(**kwargs)
        context["userid"] = self.targetUser
        return context


# ユーザー削除
class UserDelete(DeleteView):
    # userテーブル連携
    model = models.userTrade
    # レコード情報をテンプレートに渡すオブジェクト
    context_object_name = "user_delete"
    # テンプレートファイル連携
    template_name = "AppHTML/user_delete.html"
    # 削除後のリダイレクト先
    success_url = reverse_lazy("index")

Template

order/Template/AppHTML/order_delete.html
{% extends "AppHTML/header.html" %}

{% block content_block %}
<h1>本当に削除しますか?</h1>
<form method="post">
  {% csrf_token %}
  <input type="submit" class="btn btn-danger" value="削除">
  <p style="display:inline;"><a class='btn btn-primary' href="{% url 'orderDetail' pk=userid %}">キャンセル</a></p>
</form>
{% endblock %}

orderPro/Template/AppHTML/user_create.html
{% extends "AppHTML/header.html" %}

{% block content_block %}
<h1>本当に削除しますか?</h1>
<form method="post">
  {% csrf_token %}
  <input type="submit" class="btn btn-danger" value="削除">
  <a href="{% url 'userTradeDetail' pk=user_delete.pk %} ">キャンセル</a>
</form>
{% endblock %}

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