练习-多表图书管理系统
目录
urls
from django.contrib import admin from django.urls import path,re_path from book import viewsurlpatterns = [path('admin/', admin.site.urls),re_path('books/add/$',views.add_book),re_path('books/$',views.books),re_path('books/(\d+)/change/$',views.change_book),re_path('books/(\d+)/delete/$', views.delete_book) ]
models
from django.db import models# Create your models here. class Author(models.Model):nid = models.AutoField(primary_key=True)name=models.CharField(max_length=32)age=models.IntegerField() class Publish(models.Model):nid=models.AutoField(primary_key=True)name=models.CharField(max_length=32)city=models.CharField(max_length=32)email=models.EmailField()class Book(models.Model):nid=models.AutoField(primary_key=True)title=models.CharField(max_length=32)publishDate=models.DateField()price=models.DecimalField(max_digits=5,decimal_places=2)publish=models.ForeignKey(to="Publish",to_field="nid",on_delete=models.CASCADE)authors=models.ManyToManyField(to="Author")
views
from django.shortcuts import render,HttpResponse,redirect from .models import Publish, Authorfrom book.models import *# Create your views here.def add_book(request):if request.method == "POST":title=request.POST.get("title")price=request.POST.get("price")pub_date=request.POST.get("pub_date")publish_id=request.POST.get("publish_id")authors_id_list=request.POST.getlist("authors_id_list") #getlist 应用在checkbox,select book_obj=Book.objects.create(title=title,price=price,publishDate=pub_date,publish_id=publish_id)book_obj.authors.add(*authors_id_list)return redirect("/books/")publish_list = Publish.objects.all()author_list = Author.objects.all()return render(request, "addbook.html", {"author_list": author_list,"publish_list": publish_list,})def books(request):book_list=Book.objects.all()return render(request,"books.html",{'book_list':book_list})def change_book(request,edit_book_id):edit_book_obj = Book.objects.filter(pk=edit_book_id).first() #编辑的对象if request.method == "POST":title = request.POST.get("title")price = request.POST.get("price")pub_date = request.POST.get("pub_date")publish_id = request.POST.get("publish_id")authors_id_list = request.POST.getlist("authors_id_list") # getlist 应用在checkbox,select Book.objects.filter(pk=edit_book_id).update(title=title,price=price,publishDate=pub_date,publish_id=publish_id)# edit_book_obj.authors.clear()# edit_book_obj.authors.add(*authors_id_list) edit_book_obj.authors.set(authors_id_list) #set:先清空,再添加值return redirect("/books/")publish_list=Publish.objects.all()author_list=Author.objects.all()return render(request,"editbook.html",{"edit_book_obj":edit_book_obj,"publish_list":publish_list,"author_list":author_list})def delete_book(request,delete_book_id):Book.objects.filter(pk=delete_book_id).delete()return redirect("/books/")
addbook.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="/static/bs/css/bootstrap.css"> </head> <body> <h3>添加书籍</h3> <div class="container"><div class="row"><div class="col-md-6 col-md-offset-3"><form action="" method="post">{% csrf_token %}<div class="form-group"><label for="">名称</label><input type="text" name="title" class="form-control"></div><div class="form-group"><label for="">价格</label><input type="text" name="price" class="form-control"></div><div class="form-group"><label for="">出版日期</label><input type="date" name="pub_date" class="form-control"></div> 单选框:select+for循环+option option 元素定义下拉列表中的一个选项(一个条目)。<div class="form-group"><label for="">出版社</label><select name="publish_id" id="" class="form-control" >{% for publish in publish_list %}<option value="{{ publish.pk }}">{{ publish.name }}</option>{% endfor %}</select></div> 复选框:需要注意,select加上multiple(复选框),其余与单选框相同<div class="form-group"><label for="">作者</label><select name="authors_id_list" id="" multiple class="form-control">{% for author in author_list %}<option value="{{ author.pk }}">{{ author.name }}</option>{% endfor %}</select></div><input type="submit" class="btn btn-default"></form></div></div> </div></body> </html>
books.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="/static/bs/css/bootstrap.css"> </head> <body> <h3>查看书籍</h3> <div class="container"><div class="row"><div class="col-md-8 col-md-offset-2"><a href="/books/add/" class="btn btn-primary">添加书籍</a><table class="table table-bordered table-hover table-striped"><thead><tr><th>编号</th><th>书籍名称</th><th>价格</th><th>出版日期</th><th>出版社</th><th>作者</th><th>操作</th></tr></thead><tbody>{% for book in book_list %}<tr><td>{{ forloop.counter }}</td><td>{{ book.title }}</td><td>{{ book.price }}</td><td>{{ book.publishDate|date:"Y-m-d" }}</td><td>{{ book.publish.name }}</td><td>{% for author in book.authors.all %}{% if forloop.last %}<span>{{ author.name }}</span>{% else %}<span>{{ author.name }}</span>,{% endif %}{% endfor %}</td><td><a href="/books/{{ book.pk }}/change/" class="btn btn-warning">编辑</a><a href="/books/{{ book.pk }}/delete/" class="btn btn-danger">删除</a></td></tr>{% endfor %}</tbody></table></div></div> </div></body> </html>
editbook.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="/static/bs/css/bootstrap.css"> </head> <body> <h3>编辑书籍</h3> <div class="container"><div class="row"><div class="col-md-6 col-md-offset-3"><form action="" method="post">{% csrf_token %}<div class="form-group"><label for="">名称</label><input type="text" name="title" class="form-control" value="{{ edit_book_obj.title }}"></div><div class="form-group"><label for="">价格</label><input type="text" name="price" class="form-control" value="{{ edit_book_obj.price }}"></div><div class="form-group"><label for="">出版日期</label><input type="date" name="pub_date" class="form-control"value="{{ edit_book_obj.publishDate|date:"Y-m-d" }}"></div><div class="form-group"><label for="">出版社</label><select name="publish_id" id="" class="form-control" value="{{ edit_book_obj.publish }}">{% for publish in publish_list %}{% if edit_book_obj.publish == publish %}<option selected value="{{ publish.pk }}">{{ publish.name }}</option>{% else %}<option value="{{ publish.pk }}">{{ publish.name }}</option>{% endif %}{% endfor %}</select></div><div class="form-group"><label for="">作者</label><select name="authors_id_list" id="" multiple class="form-control">{% for author in author_list %}{% if author in edit_book_obj.authors.all %}<option selected value="{{ author.pk }}">{{ author.name }}</option>{% else %}<option value="{{ author.pk }}">{{ author.name }}</option>{% endif %}{% endfor %}</select></div><input type="submit" class="btn btn-default"></form></div></div> </div></body> </html>
转载于:https://www.cnblogs.com/hexiaorui123/p/10590783.html
练习-多表图书管理系统相关推荐
- 图书管理系统(SpringBoot+SpringMVC+Mybatis)
目录 项目业务 开发环境与技术栈 项目功能 项目演示 用户登录 用户管理 学生信息管理和图书信息管理类似于用户管理 图书借阅信息管理 数据库设计 数据表关系图 创建数据库及表 前后端接口 查询专业字典 ...
- Python图书管理系统(二)
文章目录 前言 PyMySQL 安装 PyMySQL 使用 数据库方面的准备 图书管理系统代码 前言 上次写了用IO完成数据存储的图书管理系统, 这次更新一个用MySQL完成数 ...
- 使用django创建一个单表查询的图书管理系统
使用django创建一个单表查询的图书管理系统 在settings.py文件中添加(用于连接mysql数据库) DATABASES = {'default': {'ENGINE': 'django.d ...
- 基于顺序表的图书管理系统(C语言)
Visual Studio编译环境 功能: 0.退出. 1.基于顺序存储结构的图书信息表的创建和输出. 2.基于顺序存储结构的图书信息表的新图书的入库. ...
- 顺序表:实现图书管理系统
引入万能库和命名空间 #include<bits/stdc++.h> using namespace std; 定义结构体 typedef struct {char no[20];char ...
- 图书管理系统的数据库表结构(三)
接图书管理系统的数据库表结构(二) I.1 List of references Name Code Parent Table Child Table Foreign Key Columns ...
- 数据结构实验1《基于线性表的图书管理系统》
数据结构实验1<基于线性表的图书管理系统> (visual studio 2019可运行) 输入及输出要求见<数据结构C语言(第二版)>严蔚敏版 [本文仅用于啥都看不懂还想交作 ...
- 利用顺序表建立简单图书管理系统
采用线性表中的顺序储存方式,实现对书籍的增加,删除,查找,展示等基础功能. 基本知识点:顺序表的初始化,顺序表的查找,顺序表的插入以及顺序表的删除. #include <iostream> ...
- c语言-图书管理系统(顺序表)
c语言-图书管理系统--顺序表实现增删改查 采用外部控制台运行,若直接控制台输出,则清屏命令无效 每种图书信息包括ISBN.书名.价格 具有以下几种功能 0.初始化图书表, 1.录入图书信息 ,2. ...
最新文章
- LeetCode简单题之检查两个字符串数组是否相等
- 【每日一念经】算法岗面经,一万字面试经验你确定不看?
- HTML5 —— 视频/音频
- ResNets王者回归、「极飞科技」刷新中国农业AI领域最大融资纪录 | AI日报
- web布局最实用的12条css技巧
- [AWDwR4] Iteration F4
- Machine Learning - Andrew Ng on Coursera (Week 3)
- find linux 指定后缀_linux下find(文件查找)命令的用法总结
- 【论文】 NLP中命名实体识别从机器学习到深度学习的代表性研究
- Matlab·Simulink的使用—【S函数的创建与应用】
- WebM文件格式标准
- PS 模糊图片背景(滤镜)
- Python中一个非常高效的json对比库--deepdiff
- FFT算法实现,python,Java
- 关于马克思《青年在选择职业时的考虑》的读书报告
- 房价,经济转型,技术创新
- 太阳光轨迹软件_教你记录太阳的轨迹
- 给定平面上任意三个点的坐标(x1​,y1​)、(x2​,y2​)、(x3​,y3​),检验它们能否构成三角形。
- 儿童定位手表app定制开发有哪些功能
- java 英文单词命名缩写_java程序员英文单词缩写和解释
热门文章
- DOS下从硬盘安装XP系统方法与要点
- WCF 使用证书认证 方法
- 62 | 测一测 | 这些软件测试题目,你都掌握了吗?
- 关于UI自动化测试元素定位细节记录
- 冒泡排序,swich语句,while循环...基础性的一道综合题初学者可以做一个简单的测试...
- 孙鑫MFC学习笔记1.Windows应用程序运行机理
- ORACLE——重做日志文件管理
- 谷歌对用户搜索加密这一做法对seo的影响!
- [HDU3691 Nubulsa Expo]
- android笔记3:activity的生命周期(转)