删除出版社的前端页面是在list上做一些修改。代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="/publisher_add/">新增出版社</a>
<table border="1">
<thead>
<tr>
<th>序号</th>
<th>id</th>
<th>出版社名称</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for i in publisher_list %} <!-- for循环来显示出版社 -->
<tr>
<td>{{ forloop.counter }}</td> <!-- 循环计数 -->
<td>{{ i.id }}</td> <!-- 取出id -->
<td>{{ i.name }}</td> <!-- 取出出版社名字 -->
<td><a href="/publisher_del/?id={{ i.id }}">删除</a></td>
</tr>
{% endfor %} <!-- 结束for循环 -->
</tbody>
</table>
</body>
</html>
当我们点击删除的时候,发送一个get请求给后端,在url参数里面带上出版社的id给后端。后端通过id来删除相应的出版社。
from django.shortcuts import render, redirect
from app01 import models
# Create your views here.
def publisher_list(request):
obj = models.Publisher.objects.all() # 获取所有对象
return render(request, 'publisher_list.html', {'publisher_list': obj}) # {'publisher_list': obj}是模板,可以传递给前端页面。
def publisher_add(request):
if request.method == "POST": # 如果是POST请求
pub_name = request.POST.get('pub_name') # 获取出版社的名称
if not pub_name:
return render(request, 'publisher_add.html', {'error': "出版社名字不能为空"})
if models.Publisher.objects.filter(name=pub_name):
return render(request, 'publisher_add.html', {'error': "出版社已经存在"})
models.Publisher.objects.create(name=pub_name) # 增加出版社,使用create方法
return redirect('/publisher_list/') # 增加完成以后,跳转到获取所有出版社页面
return render(request, 'publisher_add.html') # 默认返回增加页面。
def publisher_del(request):
pk = request.GET.get('id') # 获取URL中id字段的值
models.Publisher.objects.filter(id=pk).delete() # 删除数据库中的数据
return redirect('/publisher_list/') # 重定向页面。
"""bookmanager URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/3.1/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('publisher_list/', views.publisher_list),
path('publisher_add/', views.publisher_add),
path('publisher_del/', views.publisher_del),
]
这样就能实现,根据id删除数据库中的数据。下面是删除的展示。
我们来删除图灵教育,点击删除即可。之后页面如下所示。