6.1 - 图书管理系统
Posted Alice的小屋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6.1 - 图书管理系统相关的知识,希望对你有一定的参考价值。
实现功能:book单表的增删改查
主要代码:
models.py
from django.db import models class Book(models.Model): id = models.AutoField(primary_key=True) title = models.CharField(max_length=32,unique=True) price = models.DecimalField(max_digits=8,decimal_places=2) pub_date = models.DateField() publish = models.CharField(max_length=32) def __str__(self): return self.title
settings.py
DATABASES = { \'default\': { \'ENGINE\': \'django.db.backends.mysql\', \'NAME\':\'book_single\', # 要连接的数据库,连接前需要创建好 \'USER\':\'root\', # 连接数据库的用户名 \'PASSWORD\':\'123\', # 连接数据库的密码 \'HOST\':\'127.0.0.1\', # 连接主机,默认本级 \'PORT\':3306 # 端口,默认3306 } }
python manage.py makemigrations
python manage.py migrate
urls.py
from django.contrib import admin from django.urls import path,re_path from books import views urlpatterns = [ path(\'books/\',views.books), path(\'addbook/\',views.addbook,name = \'addbook\'), # path(\'books/<int:id>/delete/\',views.delbook), re_path(r\'books/(\\d+)/delete\',views.delbook), # re_path(r\'books/(\\d+)/change/\',views.changebook), path(\'books/<int:id>/change/\',views.changebook), path(\'query/\',views.query) ]
views.py
from django.shortcuts import render,HttpResponse,redirect from django.forms.models import model_to_dict from books.models import Book def books(request): book_list = Book.objects.all() return render(request,\'books.html\',locals()) def addbook(request): if request.method == \'POST\': title = request.POST.get(\'title\') price = request.POST.get(\'price\') pub_date = request.POST.get(\'pub-date\') publish = request.POST.get(\'publish\') if title == \'\' or price == \'\' or pub_date == \'\' or publish == \'\': return render(request, \'addbook.html\',{\'ret\':\'所有选项不能为空\'}) Book.objects.create(title=title,price=price,pub_date=pub_date,publish=publish) return redirect(\'/books/\') else: return render(request,\'addbook.html\') def delbook(request,id): Book.objects.filter(id=id).delete() return redirect(\'/books/\') # 两次请求 def changebook(request,id): book_obj = Book.objects.filter(id=id).first() if request.method == \'POST\': title = request.POST.get(\'title\') price = request.POST.get(\'price\') pub_date = request.POST.get(\'pub-date\') publish = request.POST.get(\'publish\') if title == \'\' or price == \'\' or pub_date == \'\' or publish == \'\': return render(request, \'addbook.html\',{\'ret\':\'所有选项不能为空\'}) Book.objects.filter(id=id).update(title=title,price=price,pub_date=pub_date,publish=publish) return redirect(\'/books/\') else: return render(request,\'change.html\',{\'book_obj\':book_obj})
base.html
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! --> {% block title %} <title>base</title> {% endblock title %} <!-- Bootstrap --> <link href="/static/bootstrap-3.3.7/css/bootstrap.min.css" rel="stylesheet"> <!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询(media queries)功能 --> <!-- 警告:通过 file:// 协议(就是直接将 html 页面拖拽到浏览器中)访问页面时 Respond.js 不起作用 --> <!--[if lt IE 9]> <script src="https://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.min.js"></script> <script src="https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script> <![endif]--> <link rel="stylesheet" href="/static/base.css"> </head> <body> <div class="container my-con "> <div class="col-md-2 "> {% block operation %} <h3>operation</h3> {% endblock operation %} </div> <div class="col-md-10"> {% block con %} <h3>content</h3> {% endblock con %} </div> </div> <!-- jQuery (Bootstrap 的所有 javascript 插件都依赖 jQuery,所以必须放在前边) --> <script src="/static/jquery-3.2.1.min.js"></script> <!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 --> <script src="/static/bootstrap-3.3.7/js/bootstrap.min.js"></script> </body> </html>
books.html
{% extends \'base.html\' %} {% block title %} <title>books</title> {% endblock title %} {% block operation %} <h3>查看书籍</h3> {% endblock operation %} {% block con %} <a href="{% url \'books:addbook\' %}" class="btn btn-primary" role="button">添加书籍</a> <div class="table-responsive"> <table class="table table-striped table-bordered table-hover"> <thead> <tr class="active"> <td><strong>书籍名单</strong></td> <td><strong>价格</strong></td> <td><strong>出版日期</strong></td> <td><strong>出版社</strong></td> <td><strong>删除操作</strong></td> <td><strong>编辑操作</strong></td> </tr> </thead> <tbody> {% for book in book_list %} <tr> <td>{{ book.title }}</td> <td>{{ book.price }}</td> <td>{{ book.pub_date|date:\'Y-m-d\' }}</td> <td>{{ book.publish }}</td> {# <td><a href="/books/{{ book.id }}/delete" class="btn btn-danger" role="button">删除</a></td>#} <td><a href="/books/{{ book.pk }}/delete" class="btn btn-danger" role="button">删除</a></td> <td><a href="/books/{{ book.pk }}/change" class="btn btn-info" role="button">编辑</a></td> </tr> {% endfor %} </tbody> </table> </div> {% endblock con %}
addbook.html
{% extends \'base.html\' %} {% block title %} <title>addbook</title> {% endblock title %} {% block operation %} <h3>添加书籍</h3> {% endblock %} {% block con %} <form action="" method="post"> {% csrf_token %} <div class="form-group"> <label for="title">书籍名称</label> <input type="text" class="form-control" id="title" name="title" > </div> <div class="form-group"> <label for="price">价格</label> <input type="text" class="form-control" id="price" name="price"> </div> <div class="form-group"> <label for="pub-date">出版日期</label> <input type="date" class="form-control" id="pub-date" name="pub-date"> </div> <div class="form-group"> <label for="publish">出版社</label> <input type="text" class="form-control" id="pub-date" name="publish"> </div> <button type="submit" class="btn btn-success pull-right">提交</button> </form> <p style="color: red;">{{ ret }}</p> {% endblock con %}
change.html
{% extends \'base.html\' %} {% block title %} <title>change</title> {% endblock title %} {% block operation %} <h3>编辑书籍</h3> {% endblock %} {% block con %} <form action="" method="post"> {% csrf_token %} <div class="form-group"> <label for="title">书籍名称</label> <input type="text" class="form-control" id="title" name="title" value="{{ book_obj.title }}" > </div> <div class="form-group"> <label for="price">价格</label> <input type="text" class="form-control" id="price" name="price" value="{{ book_obj.price }}"> </div> <div class="form-group"> <label for="pub-date">出版日期</label> <input type="date" class="form-control" id="pub-date" name="pub-date" value="{{ book_obj.pub_date|date:\'Y-m-d\' }}"> </div> <div class="form-group"> <label for="publish">出版社</label> <input type="text" class="form-control" id="pub-date" name="publish" value="{{ book_obj.publish }}"> </div> <button type="submit" class="btn btn-success pull-right">提交</button> </form> <p style="color: red;">{{ ret }}</p> {% endblock con %}
以上是关于6.1 - 图书管理系统的主要内容,如果未能解决你的问题,请参考以下文章