开发图书增删改查页面(代码片段)

kris12 kris12     2022-11-20     205

关键词:

开发图书增删改查页面
需求:
1.列出图书列表、出版社列表、作者列表
2.点击作者,会列出其出版的图书列表
3.点击出版社,会列出旗下图书列表
4.可以创建、修改、删除 图书、作者、出版社

主页信息:
http://127.0.0.1:8000/index/

model.py
from django.db import models

# Create your models here.

class Book(models.Model):
    """书表"""
    id = models.AutoField(primary_key=True)
    title = models.CharField(max_length=32)
    publish_date = models.DateField()
    publisher = models.ForeignKey("Publisher",on_delete=models.CASCADE)
    author = models.ManyToManyField("Author")

class Publisher(models.Model):
     \'\'\'出版社表\'\'\'
     id = models.AutoField(primary_key=True)
     pname = models.CharField(max_length=32)

class Author(models.Model):
     \'\'\'作者表\'\'\'
     id = models.AutoField(primary_key=True)
     aname = models.CharField(max_length=32)

urls.py


from django.contrib import admin
from django.urls import path, re_path

from app01 import views

urlpatterns = [
    path(\'admin/\', admin.site.urls),
    path(\'index/\', views.index),

    path(\'book/\', views.book),
    path(\'addbook/\', views.addbook),
    re_path(r"^delbook/", views.delbook), #delbook(request,2)
    re_path(r"^editbook/", views.editbook),
    #re_path(r"query",views.query),

    re_path(r\'^publisher\', views.publisher),
    re_path(r\'^addpublisher\', views.addpublisher),
    re_path(r\'^delpublisher\', views.delpublisher),
    re_path(r\'^editpublisher\', views.editpublisher),
    re_path(r\'^publisher_book\', views.publisher_book),

    re_path(r\'^author/\', views.author),
    re_path(r\'^addauthor\', views.addauthor),
    re_path(r\'^delauthor\', views.delauthor),
    re_path(r\'^editauthor\', views.editauthor),
    re_path(r\'^author_book\', views.author_book),

]

views.py

from django.shortcuts import render, HttpResponse, redirect

# Create your views here.
from app01.models import Book
from app01 import models

#主页
def index(request):
    return render(request,"index.html")

#添加书籍
def addbook(request):
    if request.method == \'POST\':
        title = request.POST.get("title")
        pid = request.POST.get("pid")
        publish_date = request.POST.get("pub_date")
        authors = request.POST.getlist("aids")

        models.Book.objects.create(title=title,publish_date=publish_date,publisher_id=pid)
        new_book = models.Book.objects.get(title=title)
        new_book.author.set(authors)
        return redirect("/book/")
    pub_list = models.Publisher.objects.all()
    author_list = models.Author.objects.all()
    return render(request, "addbook.html", "pub_list": pub_list, "author_list": author_list)

#查看图书
def book(request):
    book_list = Book.objects.all()
    return render(request, "book.html", "book_list":book_list)
#删除书籍
def delbook(request):
    bid = request.GET.get("bid")
    book_obj = models.Book.objects.filter(id=bid).first()
    book_obj.delete()
    return redirect("/book/")
#编辑书籍
def editbook(request):
    bid = request.GET.get("bid")
    book_obj = models.Book.objects.filter(id=bid).first()
    if request.method == "POST":
        title = request.POST.get("title")
        pid = request.POST.get("pid")
        publish_date = request.POST.get("pub_date")
        authors = request.POST.getlist("aids")
        models.Book.objects.filter(id=bid).update(title=title, publish_date=publish_date, publisher_id=pid)
        edit_book = models.Book.objects.get(id=bid)
        edit_book.author.set(authors)
        return redirect("/book/")
    pub_list = models.Publisher.objects.all()
    author_list = models.Author.objects.all()
    return render(request,"editbook.html","book_obj":book_obj,"pub_list": pub_list, "author_list": author_list)

# def query(request):
#     ret = Book.objects.filter(publish="老男孩出版社", price__gt=200)
#     ret = Book.objects.filter(title__startswith="py")
#     return HttpResponse("ok")


#查看出版社
def publisher(request):
    publisher_list = models.Publisher.objects.all()
    return render(request, "publisher.html","publisher_list":publisher_list )

def pub_is_valid(xname):
    """验证出版社信息"""
    if models.Publisher.objects.filter(pname=xname).count() != 0:
        return "status": "该出版社已存在!"
#增加出版社
def addpublisher(request):
    if request.method == \'POST\':
        pname = request.POST.get("pname")
        ret = pub_is_valid(pname)
        # print(ret)
        if ret:
            ret["pname"] = pname
            return render(request,"addpublisher.html",ret)
        else:
            models.Publisher.objects.create(pname=pname)
            return redirect("/publisher/")
    return render(request, "addpublisher.html")

#编辑出版社
def editpublisher(request):
    pid = request.GET.get("pid")
    pub_obj = models.Publisher.objects.filter(id=pid).first()
    if request.method == "POST":
        pname = request.POST.get("pname")
        ret = pub_is_valid(pname)
        if ret:
            pub_obj.pname = pname
            ret["pub_obj"] = pub_obj
            return render(request,"editpublisher.html",ret)
        else:
            models.Publisher.objects.filter(id=pid).update(pname=pname)
            return redirect("/publisher/")
    return render(request, "editpublisher.html", "pub_obj":pub_obj)

#删除出版社
def delpublisher(request):
    pid = request.GET.get("pid")
    publisher_obj = models.Publisher.objects.filter(id=pid).first()
    publisher_obj.delete()
    return redirect("/publisher/")

#出版社关联书籍
def publisher_book(request):
    pid = request.GET.get("pid")
    pub_obj = models.Publisher.objects.filter(id=pid).first()
    pname = pub_obj.pname
    book_list = pub_obj.book_set.all()
    return render(request, "publisher_book.html")
#查看作者
def author(request):
    author_list = models.Author.objects.all()
    return render(request, "author.html", "author_list":author_list)

def author_is_valid(xname):
    """验证作者信息"""
    if models.Author.objects.filter(aname=xname).count() != 0:
        return "status": "该作者已存在!"

def addauthor(request):
    if request.method == \'POST\':
        aname = request.POST.get("aname")
        ret = author_is_valid(aname)
        if ret:
            ret["aname"] = aname
            return render(request,"addauthor.html",ret)
        else:
            models.Author.objects.create(aname=aname)
            return redirect("/author/")

    return render(request, "addauthor.html")

def delauthor(request):
    aid = request.GET.get("aid")
    author_obj = models.Author.objects.filter(id=aid).first()
    author_obj.delete()
    return redirect("/author/")

# 编辑作者
def editauthor(request):
    aid = request.GET.get("aid")
    author_obj = models.Author.objects.filter(id=aid).first()
    if request.method == "POST":
        aname = request.POST.get("aname")
        ret = author_is_valid(aname)
        if ret:
            author_obj.aname = aname
            ret["author_obj"] = author_obj
            return render(request,"editauthor.html",ret)
        else:
            models.Author.objects.filter(id=aid).update(aname=aname)
            return redirect("/author/")
    return render(request,"editauthor.html","author_obj":author_obj)

#作者关联书籍;多对多
def author_book(request):
    aid = request.GET.get("aid")
    author_obj = models.Author.objects.filter(id=aid).first()
    aname = author_obj.aname
    book_list = author_obj.book_set.all()
    return render(request, "author_book.html")

settings.py

 

base.html

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <link rel="stylesheet" href="/static/bs/css/bootstrap.css">
 7 
 8 </head>
 9 <body>
10 <div class="container">
11     <h2>图书管理系统</h2>
12     <br>
13 </div>
14 
15 <div class="container">
16     <ul class="nav nav-tabs" id="myTab">
17         <li role="presentation" class="active"><a href="/index/">主页</a></li>
18         <li role="presentation"><a href="/book/">图书</a></li>
19         <li role="presentation"><a href="/author/">作者</a></li>
20         <li role="presentation"><a href="/publisher/">出版社</a></li>
21     </ul>
22 </div>
23 <br>
24 
25 % block content %
26 % endblock %
27 
28 
29 </body>
30 <script src="/static/js/jquery-3.3.1.js"></script>
31 <script src="/static/bs/js/bootstrap.js"></script>
32 
33 <script>
34     % block script %
35     % endblock %
36 </script>
37 </html>
View Code

addauthor.html

 1 % extends "base.html" %
 2 % block content %
 3 
 4     <div class="container">
 5         <div class="col-md-4">
 6             <h4>添加作者信息</h4>
 7             <form action="/addauthor/" method="post">
 8                 % csrf_token %
 9                 <div class="form-group">
10                     <label for="author">作者姓名</label>
11                     <input type="text" class="form-control" id="author" name="aname"
12                            placeholder="请输入要添加的作者姓名" value=" aname " style="margin-bottom: 5px;">
13                     <span class="label label-danger"> status </span>
14                 </div>
15                 <div class="form-group">
16                     <button type="submit" class="btn btn-primary">提交</button>
17                 </div>
18             </form>
19         </div>
20     </div>
21 
22 % endblock %
View Code

addbook.html

 1 % extends "base.html" %
 2 % block content %
 3 
 4     <div class="container">
 5         <div class="col-md-4">
 6             <h4>添加图书信息</h4>
 7             <form action="/addbook/" method="post">
 8                 % csrf_token %
 9                 <div class="form-group">
10                     <label for="book">书名</label>
11                     <input type="text" class="form-control" id="book" name="title"
12                            placeholder="请输入要添加的书籍名称">
13                 </div>
14                 <div class="form-group">
15                     <b style="margin-bottom: 5px;display: inline-block">请选择出版社</b>
16                     <select class="form-control" name="pid">
17                         % for pub in pub_list %
18                             <option value= pub.id > pub.pname </option>
19                         % endfor %
20                     </select>
21                 </div>
22                 <div class="form-group">
23                     <label for="date">出版日期</label>
24                     <input type="date" class="form-control" id="date" name="pub_date">
25                 </div>
26                 <div class="form-group">
27                     <b style="margin-bottom: 5px;display: inline-block">请选择作者(可多选)</b>
28                     <select class="form-control" multiple name="aids">
29                         % for author in author_list %
30                             <option value= author.id > author.aname </option>
31                         % endfor %
32                     </select>
33                 </div>
34                 <div class="form-group">
35                     <button type="submit" class="btn btn-primary">提交</button>java全栈web网页技术:15.书城项目实战四:管理端图书的增删改查(后台)(代码片段)

1.需求澄清管理端图书管理页面【book_manager.jsp】页面原型如下:需要实现图书的添加、删除、修改、分页显示等操作2.前期准备2.1创建数据表bookscreateTABLEbooks(idINTPRIMARYKEYauto_increment,titlevarchar(50),authorVARCHAR(50),priceDOUBLE(10,2),sales... 查看详情

ssm框架整合---完成对图书数据表的增删改查(代码片段)

....spring层5.springmvc6.查询书籍功能实现7.新增书籍实现8.修改图书信息9.删除图书信息10.查询图书信息1.先去创建数据表并且放入几条初始化数据--创建数据库CR 查看详情

微信小程序云开发—“增删改查综合案例(跳转页面)”(代码片段)

实际需求:1.能查看商品列表2.点击"商品列表"中的商品跳转到“商品详情页”大体步骤:1.商品列表页对应:/Pages/demo1/demo12.商品详情页对应:/Pages/demo1-1/demo1-1一、商品列表页(Pages/demo1/demo1)demo1.wxml<viewwx:for="lis... 查看详情

图书管理系统-单表的增删改查(代码片段)

配置环境settings.py文件MIDDLEWARE=[‘django.middleware.security.SecurityMiddleware‘,‘django.contrib.sessions.middleware.SessionMiddleware‘,‘django.middleware.common.CommonMiddleware‘,#‘django.middleware.csrf.CsrfViewMiddleware‘,#暂时不用,注释掉‘django.contrib.auth.middl... 查看详情

springboot+vue+axios+bootstrap实现图书的增删改查功能(代码片段)

...做,不太熟练。在后续的过程中会不断的完善。一、开发工具IntelliJIDEAUltimate2021.1apache-maven-3.5.4MySQL5.7JDK1.8.0_281二、项目结构三、编写项目1、创建数据库SETNAMESutf8mb4;SETFOREIGN_KEY_CHECKS=0;--------------------------------Tablestructureforbo... 查看详情

asp.netcore打造一个简单的图书馆管理系统外借/阅览图书信息的增删改查(代码片段)

...文章主要为我之前所学知识的一次微小的实践,以我学校图书馆管理系统为雏形所作。本系列文章主要参考资料:微软文档:https://docs.microsoft.com/zh-cn/aspnet/core/getting-started/?view=aspnetcore-2.1&tabs=windows《ProASP.NETMVC5》、《锋利的jQ... 查看详情

jeesite应用实战(数据增删改查)(代码片段)

...搭建起来jeesite的站点。系统可以运行以后,就可以进入开发模块了,我们先从数据的增删改查做起。一、页面效果很简单,涉及到的就是数据的增删改查。二、如何利用jeesite做呢?上面我们也看到了,功能很简单,那么怎么利... 查看详情

java全栈web网页技术:15.书城项目实战四:管理端图书的增删改查(后台)(代码片段)

1.需求澄清管理端图书管理页面【book_manager.jsp】页面原型如下:需要实现图书的添加、删除、修改、分页显示等操作2.前期准备2.1创建数据表bookscreateTABLEbooks(idINTPRIMARYKEYauto_increment,titlevarchar(50),authorVARCHAR(50),priceDOUBLE(10,2),sales... 查看详情

一起学vue:crud(增删改查)(代码片段)

...辑页面我们把这些用户信息保存到Todos的数组中,然后增删改查就在这个数组上进行:Todos:[Name:"遛狗",Name:"跑步"]我们在这里一共要实现TodoList.vue、TodoAdd.vue、TodoEdit.vue三个组件,分别 查看详情

vue实现数据的增删改查(代码片段)

...里,个人中心里的数据列表里,都会有对这些数据进行增删改查的操作。比如在管理员后台的用户列表里,我们可以录入新用户的信息,也可以对既有的用户信息进行修改。在vue中,我们更应该专注于对数据的操作和处理。比如... 查看详情

django---进阶7(代码片段)

目录图书管理的图书增删改查choices参数(数据库字段设计常见)MTV与MVC模型多对多三种创建方式Ajax小例子作业图书管理的图书增删改查fromdjango.shortcutsimportrender,redirect,HttpResponsefromapp01importmodels#Createyourviewshere.defhome(request):returnrender... 查看详情

后端开发preparedstatement实现表的增删改查(代码片段)

StatementTest.javapackagecom.cls1277.preparedstatement;importcom.cls1277.preparedstatement.customer.Customer;importcom.cls1277.utils.JDBCutils;importorg.junit.Test;importjava.io.InputStream;importjava 查看详情

django项目开发部署完整案例最终效果展示源码simpleui增删改查(代码片段)

...改查的功能,于是就用django+simpleui写了一个,开发工具是pycharm。历经大坑小坑,最终成功上线,这里记录下整个过程,并分享出源码,放在文章最后。如果你想自己测试下,拿到源码࿰ 查看详情

idea+java+ssm+jsp+mysql实现web图书管理系统(代码片段)

目录一、系统介绍1.开发环境2.技术选型3.系统功能4.数据库文件二、系统展示1.登录系统2.用户-借阅书籍3.管理员-图书管理4.管理员-图书类型管理5.管理员-读者管理6.管理员-读者类型管理7.管理员-借阅记录查看三、部分代码BookCont... 查看详情

springboot小案例(登陆,增删改查)(代码片段)

...要功能:实现登陆拦截,然后进入主页面进行增删改查工作,开启Druid数据源,进行durid日志监控页面展示:代码编写:   目录结构:   导入依赖:  配置application.yml配置登陆拦截器以及开启dur... 查看详情

增删改查(全栈)(代码片段)

...解增删改查 码字不易,点个关注 转载请说明!开发工具:eclipse  数据库:SQLServer  1.数据库建表三张表:学生(id,名字,班级,教员,爱好)        班级(id,名字)、     查看详情

jsp登录注册代码(增删改查+网页+数据库)(代码片段)

目录一·登录注册代码以及效果doregister.jsp:注册信息弹框login.jsp:登录dologin.jsp:与数据库相连、存放登陆的用户index.jsp:主界面update.jsp:修改doup.jsp:修改页面(帮助)info.jsp:详情dodel.jsp:删除界面二·页面跳转的方式... 查看详情

shsql增删改查(代码片段)

查看详情