关键词:
开发图书增删改查页面
需求:
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>
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 %
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增删改查(代码片段)