PythonのWebアプリケーションフレームワーク”Django”について無料で学習します。
今回は”DeleteView”クラスについて学習します。
“DeleteView”クラスは継承する事によってモデルクラスへデータ削除することができます。
準備
※仮想環境”venv”にて進めます。
環境
環境 | version | 備考(コマンド) |
Rocky Linux | 8.4 | cat /etc/redhat-release |
Python | 3.6.8 | python -V |
Django | 3.2 | django-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 %}