前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django——图书管理系统(七)

Django——图书管理系统(七)

作者头像
zy010101
发布2021-01-29 11:06:24
3121
发布2021-01-29 11:06:24
举报
文章被收录于专栏:程序员

前文,我已经介绍过了外键。本文将介绍,在带有外键的情形下,如何实现增删改查的。图书管理系统现在已经可以管理出版社了,这一步就是管理书籍。鉴于前面的一系列文章已经介绍过了出版社是如何增删改查的,本次就直接上代码,展示效果。

views.py文件代码如下:

代码语言:javascript
复制
from django.shortcuts import render, redirect, HttpResponse
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/')  # 重定向页面。


def publisher_edit(request):
    id = request.GET.get('id')
    obj1 = models.Publisher.objects.get(id=id)
    if request.method == "GET":
        return render(request, 'publisher_edit.html', {'pub_obj': obj1})
    else:
        name = request.POST.get('pub_name')
        obj2 = models.Publisher.objects.filter(name=name)
        if obj2:
            return render(request, 'publisher_edit.html', {'msg': "该出版社已存在"})
        else:
            obj1.name = name  # 在内存中修改
            obj1.save()  # 将修改保存到数据库
            return redirect('/publisher_list')  # 重定向到list页面


def book_list(request):
    objs = models.Book.objects.all()

    # for obj in objs:
    #     print(obj.name)
    #     print(obj.publisher.name)       # 关联出版社的名字
    #     print(obj.publisher)            # 书籍所关联的出版社对象
    #     print(obj.publisher_id)         # 通过_id可以直接拿到关联的出版社的id
    #     print("\n")

    return render(request, 'book_list.html', {'objs': objs})


def book_add(request):
    if request.method == "GET":
        pub_obj = models.Publisher.objects.all()
        return render(request, 'book_add.html', {'pub_obj': pub_obj})
    elif request.method == "POST":
        book_name = request.POST.get('book_name')
        pub_id = request.POST.get('pub_id')
        if not book_name:  # 书名为空
            pub_obj = models.Publisher.objects.all()
            return render(request, 'book_add.html', {'pub_obj': pub_obj, 'err_msg': '书名不能为空'})
        if models.Book.objects.filter(name=book_name):  # 书籍已存在
            pub_obj = models.Publisher.objects.all()
            return render(request, 'book_add.html', {'pub_obj': pub_obj, 'err_msg': '书籍已存在'})
        # models.Book.objects.create(name=book_name, publisher=models.Publisher.objects.get(id=pub_id))         #两种方式

        models.Book.objects.create(name=book_name, publisher_id=pub_id)
        return redirect('/book_list/')
    else:
        return HttpResponse("请求方式错误")


def book_del(request):
    if request.method == "GET":
        book_id = request.GET.get('id')
        obj = models.Book.objects.filter(id=book_id).delete()
        return redirect('/book_list/')
    else:
        return HttpResponse("请求方式错误")


def book_edit(request):
    book_id = request.GET.get('id')
    obj = models.Book.objects.get(id=book_id)
    pub_obj = models.Publisher.objects.all()
    if request.method == "GET":
        return render(request, 'book_edit.html', {'obj': obj, 'pub_obj': pub_obj})
    elif request.method == "POST":
        book_name = request.POST.get('book_name')
        pub_id = request.POST.get('pub_id')

        # 方式一
        # obj.name = book_name
        # obj.publisher_id = pub_id
        # obj.save()  # 保存到数据库中

        # 方式二
        models.Book.objects.filter(id=book_id).update(name=book_name,
                                                      publisher_id=pub_id)  # 实际上filter返回的是一个列表,理论上是此时的update是一个批量操作。
        # 这个update是
        return redirect('/book_list/')
    else:
        return HttpResponse("请求方式错误")

这张图片是删除python入门到放弃以后

HTML页面和urls.py等文件的改动就不具体展示了,下面是CSDN的资源下载链接。(CSDN变了啊,它居然能够粉丝免费下载了,不要积分了,不挣C币了。所以各位想下载的可以关注我,然后就可以下载了,下载完了之后觉得不想关注的取关即可)

图书管理系统

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档