1. 出版社的删除
怎么知道用户点击删除的时候删除的是哪一条记录
- id用来在数据库中唯一确定一条记录
127.0.0.1:8000/delete_publisher/?id=2
1.首先通过delete的a标签的href="/delete_publisher/?id={{ publisher.id }}"get请求里面获取到出版社的id,
然后通过调用models.objects.get(id =id) 通过object.delete() 来删除这个出版社;
def delete_publisher(request): publisher_id = request.GET.get('id') print(publisher_id) obj = models.Publisher.objects.get(id=publisher_id) obj.delete() return redirect('/publisher/')
2. 出版社的编辑
设计 URL
127.0.0.1:8000/edit_publisher/?id=2
首先获取到publisher_id ,通过id获取到publisher对象,然后拿到publisher_name,然后携带数据跳转到edit.html,
把publisher_name放到input框的value里面,点击提交通过obj.name = publisher_name,然后obj.save(),通过重定向跳转到publiser_list.html;
def edit_publisher(request): if request.method == 'POST': # 获取到publisher_id publisher_id = request.POST.get('publisher_id') # 获取到publisher_name publisher_name = request.POST.get('publisher_name') # 获取到publisher对象 publisher_obj = models.Publisher.objects.get(id=publisher_id) # 修改publisher的出版社名称 publisher_obj.name = publisher_name # 保存更新数据库 publisher_obj.save() return redirect('/publisher/') # 获取编辑的出版社ID publisher_id = request.GET.get('id') # print(publisher_id) # 获取编辑的出版社的所有信息 publisher_obj = models.Publisher.objects.get(id=publisher_id) # print(publisher_obj) return render(request, 'edit_publisher.html', {'publisher_obj': publisher_obj})
3. 书籍的增删改查
先创建models里面的Book
ORM中的外键关联
publisher = models.ForeignKey(to=Publisher) # 外键关联Publisher这张表
book_obj.publisher --> 和我这本书关联的出版社对象
book_obj.publisher_id --> 和我这本书关联的出版社的id值,也就是数据库中真正存的字段值
查:
def book_list(request): res = models.Book.objects.all() return render(request, 'book_list.html', {'book_list':res})
增:
def add_book(request): if request.method == 'POST': book_name = request.POST.get('book_name') publisher_id = request.POST.get('publisher_id') models.Book.objects.create(name=book_name,publisher_id=publisher_id) return redirect('/book_list/') res = models.Publisher.objects.all() return render(request, 'add_book.html', {'publisher_list': res})