Django---简易图书管理系统
一丶配置
创建app01
python manage.py startapp app01
INSTALLED_APPS=[
'app01.apps.App01Config',
]
静态文件配置:
STATIC_URL = '/static/'
STATICFILES_DIRS=[
os.path.join(BASE_DIR,'static')
]
数据库配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'day55_bookmgsystec',
'USER': 'XXX',
'PASSWORD': 'XXX',
'HOST': '127.0.0.1',
'PORT': 3306,
}
}
import pymysql
pymysql.install_as_MySQLdb()
额外:
'django.middleware.csrf.CsrfViewMiddleware',
二丶数据库编写
使用orm操作数据库:
class Pub(models.Model):
pid=models.AutoField(primary_key=True)
pname=models.CharField(max_length=32,unique=True)
数据迁移
python manage.py makemigrations
python manage.py migrate
三丶路由关系
查看
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^publisher_list/', views.publisher_list),
]
from app01 import models
def publisher_list(request):
all_pub = models.Pub.objects.all().order_by('pid')
return render(request, 'publisher_list.html', {'all_pub': all_pub})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
table, h1 {
text-align: center;
}
button {
position: absolute;
top: 60px;
left: 520px;
}
</style>
</head>
<body>
<h1>图书管理系统</h1>
<button>添加</button>
<table border="1px" width="500px" align="center">
<thead>
<tr>
<th>序号</th>
<th>编号</th>
<th>出版社名称</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for pub in all_pub %}
<tr>
<td>{{ forloop.counter }}</td>
<td>{{ pub.pid }}</td>
<td>{{ pub.pname }}</td>
<td>
<a href="/publisher_edit?pk={{ pub.pk }}">编辑</a> |
<a href="/publisher_del?pk={{ pub.pk }}">删除</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<script>
window.onload= function () {
var tag=document.getElementsByTagName('button')[0]
tag.onclick=function () {
location.href='/publisher_add'
}
}
</script>
</body>
</html>
增加
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^publisher_add/', views.publisher_add),
]
from app01 import models
def publisher_add(request):
pub_name, error = '', ''
if request.method == 'POST':
pub_name = request.POST.get('pname')
if not pub_name:
error = '输入的内容为空'
elif models.Pub.objects.filter(pname=pub_name):
error = '出版社名称已存在'
else:
models.Pub.objects.create(pname=pub_name)
return redirect(to='/publisher_list/')
return render(request, 'publisher_add.html', {'error': error, 'data': pub_name})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="" method="post" style="text-align: center">
<h1>添加出版社</h1>
<input type="text" name="pname" value="{{ data }}"/>
<br>
<span style="color: red;">{{ error }}</span>
<br>
<input type="submit"/>
<input type="reset" id="rest" value="取消"/>
</form>
<script>
window.onload = function () {
var back = document.getElementById('rest')
back.onclick = function () {
location.href = '/publisher_list'
}
}
</script>
</body>
</html>
编辑
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^publisher_edit/', views.publisher_edit),
]
from app01 import models
def publisher_edit(request):
error, data = '', ''
pk = request.GET.get('pk')
obj = models.Pub.objects.filter(pk=pk).first()
if not obj:
return HttpResponse('更新数据不存在')
if request.method == 'POST':
pname = request.POST.get('pname')
if not pname:
error = '内容为空'
elif models.Pub.objects.filter(pname=pname):
error = '出版社已存在'
else:
obj.pname = pname
obj.save()
return redirect(to='/publisher_list')
return render(request, 'publisher_edit.html', {'error': error, 'data': obj})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="" method="post" style="text-align: center">
<h1>更新出版社</h1>
<input type="text" name="pname" value="{{ data.pname }}"/>
<br>
<span style="color: red;">{{ error }}</span>
<br>
<input type="submit" value="更新"/>
<input type="reset" id="rest" value="取消"/>
</form>
<script>
window.onload=function () {
var back=document.getElementById('rest')
back.onclick=function () {
location.href='/publisher_list'
}
}
</script>
</body>
</html>
删除
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^publisher_del/', views.publisher_del),
]
from app01 import models
def publisher_del(request):
pk = request.GET.get('pk')
obj = models.Pub.objects.filter(pk=pk).first()
if not obj:
return HttpResponse('删除的不存在')
obj.delete()
return redirect(to='/publisher_list')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?