python图书管理系统增删改查_Django增删改查--图书管理系统

一对一     出版社信息的增删改查

一对多    出版社信息与书籍信息的增删改查

多对多    书籍信息与作者信息的增删改查

建表

from django.db importmodelsclassPublisher(models.Model):

pid= models.AutoField(primary_key=True) #自增字段且设置为主键

name = models.CharField(max_length=32,unique=True) #设置唯一

def __str__(self):return "{}--{}".format(self.pid,self.name)classBook(models.Model):

name= models.CharField(max_length=32,unique=True)

pub= models.ForeignKey('Publisher',on_delete=models.CASCADE) #外键 要链接的类名可以直接写,也可以写在字符串内 级联删除

classAuthor(models.Model):

name= models.CharField(max_length=32)

books= models.ManyToManyField('Book') #多对多,生成第三张表

orm建表

一对一

1.设计URL

URL

2.写函数

from app01 importmodelsdefpublisher_list(request):'''展示数据'''

#获取数据库内所有出版社的数据

publishers = models.Publisher.objects.all().order_by('pid') #获取对象列表并按照pid字段排序

return render(request,'publisher_list.html',{'publishers':publishers}) #第三个参数是为了给html文件传值调用

defadd_publisher(request):'''新增数据'''

if request.method == 'POST':#获取提交的数据(括号内为input的name属性值),没有默认空字符串

new_name = request.POST.get('new_name','').strip()#设定输入不能为空

if notnew_name:return render(request,'add_publisher.html',{'err_msg':'输入不能为空','name':new_name})#设定不能与数据库现有数据重复

obj_list = models.Publisher.objects.filter(name=new_name) #在数据库中查询数据是否存在

if obj_list: #数据重复

return render(request, 'add_publisher.html', {'err_msg': '出版社名称已存在', 'name': new_name})#orm往数据库中写入数据

if new_name and notobj_list:

models.Publisher.objects.create(name=new_name)return redirect('/publisher_list/')#如果不是post请求,还是返回本页面

return render(request,'add_publisher.html')defdelete_publisher(request):'''删除数据'''

#找到需要删除的数据的id

pk = request.GET.get('pk')#通过id在数据库中找到对应的数据

obj = models.Publisher.objects.filter(pid=pk)#如果数据不存在(通过地址栏指定id进行删除)

if notobj:return HttpResponse('要编辑的数据不存在')#删除数据 返回展示页面

obj.delete()return redirect('/publisher_list/')defedit_publisher(request):#找到需要编辑的数据的id

pk = request.GET.get('pk')#通过id在数据库中找到对应的数据 对象列表]>

obj_list = models.Publisher.objects.filter(pk=pk)#如果数据不存在(通过地址栏指定id进行编辑)

if notobj_list:return HttpResponse('要编辑的数据不存在')#拿到数据 1--人民邮电出版社

obj =obj_list[0]

err_msg= ''

if request.method == 'POST':#获取用户输入的数据

new_name = request.POST.get('new_name','').strip()#设定输入不能为空,返回添加页面

if notnew_name:

err_msg= '输入不能为空'

#return render(request, 'edit_publisher.html', {'obj': obj, 'err_msg': '输入不能为空'})

#设定不能与数据库现有数据重复

obj_list = models.Publisher.objects.filter(name=new_name) #在数据库中查询数据是否存在

if obj_list: #有重复数据,返回添加页面

err_msg = '出版社名称已存在'

#return render(request, 'edit_publisher.html', {'obj': obj, 'err_msg': '出版社名称已存在'})

#修改数据

if new_name and notobj_list:

obj.name= new_name #在内存中修改

obj.save() #写入数据库

return redirect('/publisher_list/') #跳转到展示页面

return render(request,'edit_publisher.html',{'obj':obj,'err_msg':err_msg})return render(request, 'edit_publisher.html')

函数

3.写模板

在模板中    {% 逻辑 %} 表示逻辑{{ 变量 }},可以使用函数传的参数进行渲染

出版社信息

新增

序号ID名称操作

{% for foo in publishers %} #开始循环{{ forloop.counter }}{{ foo.pk }}{{ foo.name }}

删除

编辑

{% endfor %} #结束循环

publisher_list

添加信息

名称

{{ err_msg }}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值