系统环境:
python 3.6 ,django 1.11.9 ,mysql 5.7
运行截图



项目目录


实现代码
Models部分代码:
from django.db import models
# Create your models here.
class Publisher(models.Model):
name=models.CharField(max_length=32)
class Book(models.Model):
name=models.CharField(max_length=32)
publisher=models.ForeignKey(Publisher,on_delete=models.DO_NOTHING)#级联删除
出版社展示
前端
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="/static/plugins/bootstrap-3.3.7-dist/css/bootstrap.min.css">
<link rel="stylesheet" href="/static/css/dsb.css">
</head>
<body >
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container-fluid" >
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand one-pan-link-mark" href="#">Project name</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="#" class="one-pan-link-mark">Dashboard</a></li>
<li><a href="#" class="one-pan-link-mark">Settings</a></li>
<li><a href="#" class="one-pan-link-mark">Profile</a></li>
<li><a href="#" class="one-pan-link-mark">Help</a></li>
</ul>
<form class="navbar-form navbar-right">
<input type="text" class="form-control" placeholder="Search...">
</form>
</div>
</div>
</nav>
<div class="container-fluid">
<div class="row">
<div class="col-sm-3 col-md-2 sidebar">
<ul class="nav nav-sidebar">
<li class="active"><a href="/publisher_list/" class="one-pan-link-mark">出版社列表 <span class="sr-only">(current)</span></a></li>
<li class=""><a href="/book_list/" class="one-pan-link-mark">书籍列表 <span class="sr-only">(current)</span></a></li><li class=""><a href="/author_list/" class="one-pan-link-mark">作者列表 <span class="sr-only">(current)</span></a></li>
<li class=""><a href="/author_list/" class="one-pan-link-mark">作者列表 <span class="sr-only">(current)</span></a></li>
<li><a href="#" class="one-pan-link-mark">Reports</a></li>
<li><a href="#" class="one-pan-link-mark">Analytics</a></li>
<li><a href="#" class="one-pan-link-mark">Export</a></li>
</ul>
</div>
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
<h2 class="sub-header">出版社列表</h2>
<a class="btn btn-primary btn-sm" href="/publisher_add/">新增</a>
<div class="table-responsive">
<table class="table table-hover" border="1">
<thead>
<tr>
<th>序号</th>
<th>ID</th>
<th>出版社名称</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for i in all_publishers %}
<tr>
<td>{{forloop.counter}}</td>
<td>{{ i.pk }}</td>
<td>{{ i.name }}</td>
<td>
<a class="btn btn-danger btn-sm" href="/publisher_del/?pk={{ i.id }}">删除</a>
<a class="btn btn-primary btn-sm" href="/publisher_edit/?pk={{ i.id }}">编辑</a>
</td>
</tr>
{% endfor %}
</tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- Bootstrap core JavaScript
================================================== -->
<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</body>
</html>
后端
from django.shortcuts import render,redirect,HttpResponse
from app01 import models
# Create your views here.
#展示数据库
def publisher_list(request):
all_publishers=models.Publisher.objects.all().order_by('id')#对象列表
return render(request,'publisher_list.html',{'all_publishers':all_publishers})
出版社新增
前端
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="/static/plugins/bootstrap-3.3.7-dist/css/bootstrap.min.css">
<link rel="stylesheet" href="/static/css/dsb.css">
</head>
<body >
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container-fluid" >
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand one-pan-link-mark" href="#">Project name</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="#" class="one-pan-link-mark">Dashboard</a></li>
<li><a href="#" class="one-pan-link-mark">Settings</a></li>
<li><a href="#" class="one-pan-link-mark">Profile</a></li>
<li><a href="#" class="one-pan-link-mark">Help</a></li>
</ul>
<form class="navbar-form navbar-right">
<input type="text" class="form-control" placeholder="Search...">
</form>
</div>
</div>
</nav>
<div class="container-fluid">
<div class="row">
<div class="col-sm-3 col-md-2 sidebar">
<ul class="nav nav-sidebar">
<li class="active"><a href="/publisher_list/" class="one-pan-link-mark">出版社列表 <span class="sr-only">(current)</span></a></li>
<li class=""><a href="/book_list/" class="one-pan-link-mark">书籍列表 <span class="sr-only">(current)</span></a></li>
<li><a href="#" class="one-pan-link-mark">Reports</a></li>
<li><a href="#" class="one-pan-link-mark">Analytics</a></li>
<li><a href="#" class="one-pan-link-mark">Export</a></li>
</ul>
</div>
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
<div class="panel panel-primary">
<div class="panel-heading">新增出版社</div>
<div class="panel-body">
<form class="form-horizontal" action="" method="post">
<div class="form-group {% if error %}has-error{% endif %}">
<label for="inputEmail3" class="col-sm-2 control-label">出版社名称</label>
<div class="col-sm-8">
<input type="text" class="form-control" name="pub_name" id="inputEmail3" placeholder="请输入出版社名称">
<span class="help-block">{{ error }}</span>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
后端
#新增数据库
def publisher_add(reqest):
#get请求
#post请求
if reqest.method=='POST':
pub_name=reqest.POST.get('pub_name')
if not pub_name:
return render(reqest,'publisher_add.html',{'error':'出版社名称不能为空'})
if models.Publisher.objects.filter(name=pub_name):#数据库有重复
return render(reqest,'publisher_add.html',{'error':'出版社名称已经存在'})
ret=models.Publisher.objects.create(name=pub_name)
return redirect('/publisher_list/')
return render(reqest,'publisher_add.html')
出版社删除
def publisher_del(request):
pk=request.GET.get('pk')
models.Publisher.objects.filter(pk=pk).delete()#查到对象删除
return redirect('/publisher_list/')
出版社编辑
前端
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="/static/plugins/bootstrap-3.3.7-dist/css/bootstrap.min.css">
<link rel="stylesheet" href="/static/css/dsb.css">
</head>
<body >
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container-fluid" >
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand one-pan-link-mark" href="#">Project name</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="#" class="one-pan-link-mark">Dashboard</a></li>
<li><a href="#" class="one-pan-link-mark">Settings</a></li>
<li><a href="#" class="one-pan-link-mark">Profile</a></li>
<li><a href="#" class="one-pan-link-mark">Help</a></li>
</ul>
<form class="navbar-form navbar-right">
<input type="text" class="form-control" placeholder="Search...">
</form>
</div>
</div>
</nav>
<div class="container-fluid">
<div class="row">
<div class="col-sm-3 col-md-2 sidebar">
<ul class="nav nav-sidebar">
<li class="active"><a href="/publisher_list/" class="one-pan-link-mark">出版社列表 <span class="sr-only">(current)</span></a></li>
<li class=""><a href="/book_list/" class="one-pan-link-mark">书籍列表 <span class="sr-only">(current)</span></a></li>
<li><a href="#" class="one-pan-link-mark">Reports</a></li>
<li><a href="#" class="one-pan-link-mark">Analytics</a></li>
<li><a href="#" class="one-pan-link-mark">Export</a></li>
</ul>
</div>
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
<div class="panel panel-primary">
<div class="panel-heading">新增出版社</div>
<div class="panel-body">
<form class="form-horizontal" action="" method="post">
<div class="form-group {% if error %}has-error{% endif %}">
<label for="inputEmail3" class="col-sm-2 control-label">出版社名称</label>
<div class="col-sm-8">
<input type="text" class="form-control" name="pub_name"value="{{ pub_obj.name }}" id="inputEmail3" placeholder="请输入出版社名称">
<span class="help-block">{{ error }}</span>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
后端
def publisher_edit(request):
pk=request.GET.get('pk')
pub_obj=models.Publisher.objects.get(pk=pk)
if request.method=='GET':
return render(request,'publisher_edit.html',{'pub_obj':pub_obj})
else:
pub_name=request.POST.get('pub_name')
pub_obj.name=pub_name
pub_obj.save()#修改操作保存到数据库
return redirect('/publisher_list/')
本文介绍了一个使用Django框架实现的图书管理系统,包括出版社的增删改查功能,并展示了前端页面和后端处理逻辑。
533

被折叠的 条评论
为什么被折叠?



