zoukankan      html  css  js  c++  java
  • day64 views文件

    from django.shortcuts import HttpResponse, render, redirect
    from app01 import models
    # Create your views here.
    
    
    # 展示出版社列表
    def publisher_list(request):
        # 去数据库查出所有的出版社,填充到HTML中,给用户返回
        ret = models.Publisher.objects.all().order_by("id")
        return render(request, "publisher_list.html", {"publisher_list": ret})
    
    
    # 添加新的出版社
    def add_publisher(request):
        error_msg = ""
        # 如果是POST请求,我就取到用户填写的数据
        if request.method == "POST":
            new_name = request.POST.get("publisher_name", None)
            if new_name:
                # 通过ORM去数据库里新建一条记录
                models.Publisher.objects.create(name=new_name)
                # 引导用户访问出版社列表页,查看是否添加成功  --> 跳转
                return redirect("/publisher_list/")
            else:
                error_msg = "出版社名字不能为空!"
        # 用户第一次来,我给他返回一个用来填写的HTML页面
        return render(request, "add_publisher.html", {"error": error_msg})
    
    
    # 删除出版社的函数
    def delete_publisher(request):
        print(request.GET)
        print("=" * 120)
        # 删除指定的数据
        # 1. 从GET请求的参数里面拿到将要删除的数据的ID值
        del_id = request.GET.get("id", None)  # 字典取值,娶不到默认为None
        # 如果能取到id值
        if del_id:
            # 去数据库删除当前id值的数据
            # 根据id值查找到数据
            del_obj = models.Publisher.objects.get(id=del_id)
            # 删除
            del_obj.delete()
            # 返回删除后的页面,跳转到出版社的列表页,查看删除是否成功
            return redirect("/publisher_list/")
        else:
            return HttpResponse("要删除的数据不存在!")
    
    
    # 编辑出版社
    def edit_publisher(request):
        # 用户修改完出版社的名字,点击提交按钮,给我发来新的出版社名字
        if request.method == "POST":
            print(request.POST)
            # 取新出版社名字
            edit_id = request.POST.get("id")
            new_name = request.POST.get("publisher_name")
            # 更新出版社
            # 根据id取到编辑的是哪个出版社
            edit_publisher = models.Publisher.objects.get(id=edit_id)
            edit_publisher.name = new_name
            edit_publisher.save()  # 把修改提交到数据库
            # 跳转出版社列表页,查看是否修改成功
            return redirect("/publisher_list/")
        # 从GET请求的URL中取到id参数
        edit_id = request.GET.get("id")
        if edit_id:
            # 获取到当前编辑的出版社对象
            publisher_obj = models.Publisher.objects.get(id=edit_id)
            return render(request, "edit_publisher.html", {"publisher": publisher_obj})
        else:
            return HttpResponse("编辑的出版社不存在!")
    
    
    # 展示书的列表
    def book_list(request):
        # 去数据库中查询所有的书籍
        all_book = models.Book.objects.all()
        # 在HTML页面完成字符串替换(渲染数据)
        return render(request, "book_list.html", {"all_book": all_book})
    
    
    # 删除书籍
    def delete_book(request):
        # 从URL里面获取要删除的书籍的id值
        delete_id = request.GET.get("id")  # 从URL里面取数据
        # 去删除数据库中删除指定id的数据
        models.Book.objects.get(id=delete_id).delete()
        # 返回书籍列表页面, 查看是否删除成功
        return redirect("/book_list/")
    
    
    # 添加书籍
    def add_book(request):
        if request.method == "POST":
            print(request.POST)
            print("=" * 120)
            # {"book_title": "跟金老板学开车", "publisher": 9}
            new_title = request.POST.get("book_title")
            new_publisher_id = request.POST.get("publisher")
            # 创建新书对象,自动提交
            models.Book.objects.create(title=new_title, publisher_id=new_publisher_id)
    
            # 用出版社对象创建
            # publisher_obj = models.Publisher.objects.get(id=new_publisher_id)
            # models.Book.objects.create(title=new_title, publisher=publisher_obj)
    
            # 返回到书籍列表页
            return redirect("/book_list/")
    
        # 取到所有的出版社
        ret = models.Publisher.objects.all()
        return render(request, "add_book.html", {"publisher_list": ret})
    
    
    # 编辑书籍
    def edit_book(request):
        if request.method == "POST":
            # 从提交的数据里面取,书名和书关联的出版社
            edit_id = request.POST.get("id")
            new_title = request.POST.get("book_title")
            new_publisher_id = request.POST.get("publisher")
            # 更新
            edit_book_obj = models.Book.objects.get(id=edit_id)
            edit_book_obj.title = new_title  # 更新书名
            edit_book_obj.publisher_id = new_publisher_id  # 更新书籍关联的出版社
            # 将修改提交到数据库
            edit_book_obj.save()
            # 返回书籍列表页面,查看是否编辑成功
            return redirect("/book_list/")
    
        # 返回一个页面,让用户编辑书籍信息
        # 取到编辑的书的id值
        edit_id = request.GET.get("id")
        # 根据id去数据库中把具体的书籍对象拿到
        edit_book_obj = models.Book.objects.get(id=edit_id)
        print(edit_book_obj.id)
        print(edit_book_obj.title)
        print(edit_book_obj.publisher)  # 取到当前书籍对象关联的出版社对象
        print(edit_book_obj.publisher_id)  # 取到当前书籍对象关联的出版社的id值
    
        ret = models.Publisher.objects.all()
        return render(
            request,
            "edit_book.html",
            {"publisher_list": ret, "book_obj": edit_book_obj}
        )
    
    
    # 作者列表
    def author_list(request):
        # author_obj = models.Author.objects.get(id=1)
        # print(author_obj.book.all())
        # print("=" * 120)
    
        # 查询所有的作者
        all_author = models.Author.objects.all()
        return render(request, "author_list.html", {"author_list": all_author})
    
    
    # 添加作者
    def add_author(request):
        if request.method == "POST":
            print("in post...")
            # 取到提交的数据
            new_author_name = request.POST.get("author_name")
            # post提交的数据是多个值的时候一定会要用getlist,如多选的checkbox和多选的select
            books = request.POST.getlist("books")
            # 创建作者
            new_author_obj = models.Author.objects.create(name=new_author_name)
            # 把新作者和书籍建立对应关系,自动提交
            new_author_obj.book.set(books)
            # 跳转到作者列表页面,查看是否添加成功!
            return redirect("/author_list/")
    
        # 查询所有的书籍
        ret = models.Book.objects.all()
        return render(request, "add_author.html", {"book_list": ret})
    
    
    # 删除作者
    def delete_author(request):
        # 从URL里面取到要删除的作者id
        delete_id = request.GET.get("id")
        #根据ID值取到要删除的作者对象,直接删除
        # 1. 去作者表把作者删了
        # 2. 去作者和书的关联表,把对应的关联记录删除了
        models.Author.objects.get(id=delete_id).delete()
        # 返回作者列表页面
        return redirect("/author_list/")
    
    
    # 编辑作者
    def edit_author(request):
    
        # 如果编辑完提交数据过来
        if request.method == "POST":
            # 拿到提交过来的编辑后的数据
            edit_author_id = request.POST.get("author_id")
            new_author_name = request.POST.get("author_name")
            # 拿到编辑后作者关联的书籍信息
            new_books = request.POST.getlist("books")
            # 根据ID找到当前编辑的作者对象
            edit_author_obj = models.Author.objects.get(id=edit_author_id)
            # 更新作者的名字
            edit_author_obj.name = new_author_name
            # 更新作者关联的书的对应关系
            edit_author_obj.book.set(new_books)
            # 将修改提交到数据库
            edit_author_obj.save()
            # 返回作者列表页,查看是否编辑成功
            return redirect("/author_list/")
    
        # 从URL里面取要编辑的作者的id信息
        edit_id = request.GET.get("id")
        # 找到要编辑的作者对象
        edit_author_obj = models.Author.objects.get(id=edit_id)
    
        # 查询所有的书籍对象
        ret = models.Book.objects.all()
        return render(request, "edit_author.html", {"book_list": ret, "author": edit_author_obj})
    
    
    
    def test(request):
        print(request.GET)
        print(request.GET.get("id"))
        return HttpResponse("OK")
    
    
    # 书复习代码
    def book_test(request):
        # 查询所有的书籍
        # book_list = models.Book.objects.all()
        # # print(book_list)
        # for i in book_list:
        #     print(i)
        #     print(i.title)
        #     print(i.publisher)
        #     print(i.publisher.name)
        #     print(i.publisher.addr)
        #     print("=" * 20)
    
        # 增加新书
        # new_book_obj = models.Book.objects.create(
        #     title="新书的名字",
        #     publisher_id=10
        # )
        # 增加新书
        publisher_obj = models.Publisher.objects.get(id=10)
        new_book_obj = models.Book.objects.create(
            title="新书的名字2",
            publisher=publisher_obj
        )
        print(new_book_obj)
    
    
        return HttpResponse("o98k")
    

      

  • 相关阅读:
    WriteFile函数
    良好的动态内存申请与释放
    只需一条命令,快速在Windows 10上关闭Linux
    盘点程序员过年最怕被问的问题:薪资问题首当其冲,对象问题紧追其后
    程序员为什么是吃青春饭,而不是像医生律师一样越老越值钱?
    Linux网络配置的三种方法,手把手教你,一看就会!
    应届程序员VS往届程序员:当面对HR和领导时,此时的内心活动是这样的...
    MySql数据在磁盘上到底是怎么存储的?被存储的数据怎么查找?
    如何写出高质量的代码?优秀的程序员都是这样做的
    哼!MySQL 8.0不讲武德,给我挖坑!
  • 原文地址:https://www.cnblogs.com/mengbin0546/p/8993799.html
Copyright © 2011-2022 走看看