005---书籍添加和编辑的提交数据

添加和编辑两个视图函数只写了get请求渲染的页面。提交数据是post请求,所以要修改view.py。

book_add.py

 1 def book_add(request):
 2     if request.method == "POST":
 3         title = request.POST.get('title')
 4         price = request.POST.get('price')
 5         pub_date = request.POST.get('pub_date')
 6         publish_id = request.POST.get('pubs')
 7         author_id_list = request.POST.getlist('authors')  # 多选用getlist取
 8         book_obj = Book.objects.create(title=title, price=price, pub_date=pub_date, publish_id=publish_id)
 9         book_obj.author.add(*author_id_list)
10         return redirect('index')
11 
12     pub_lt = Publish.objects.all()
13     author_lt = Author.objects.all()
14     return render(request, 'book_add.html', {"pub_list": pub_lt, "author_list": author_lt})

说明:

  • 增加了post请求分支,如果是post请求,就走post里面的代码
  • 获取前端form传来的数据,request.POST.get(),因为author是多选,有多个值所以用getlist
  • 在数据库中创建一条书籍记录。绑定多对多关系,book_obj.author.add(*author_id_list)
  • 重定向到inex页面。因为添加了别名,所以可以这样使用

book_edit.py

 1 def book_edit(request, book_id):
 2     book = Book.objects.filter(pk=book_id).first()
 3     if request.method == "POST":
 4         title = request.POST.get('title')
 5         price = request.POST.get('price')
 6         pub_date = request.POST.get('pub_date')
 7         publish_id = request.POST.get('pubs')
 8         Book.objects.filter(pk=book_id).update(title=title, price=price, pub_date=pub_date, publish_id=publish_id)
 9         author_id_list = request.POST.getlist('authors')  # 多选用getlist取
10         
11         # 多对多更新
12         book.author.set(author_id_list)
13         return redirect('index')
14     pub_lt = Publish.objects.all()
15     authors = Author.objects.all()
16 
17     return render(request, 'book_edit.html', {"book": book, "pub_list": pub_lt, "author_list": authors})

说明:

  • 基本和添加的逻辑一样,只是入库的时候不一样。

更改完,我们的添加和编辑就能生效了。但是代码一样的多啊,,,好多重复的,还有更高级的用法:

你看看就行了,这有就入库了。

 

 1 def book_add(request):
 2     if request.method == 'POST':
 3         form = BookForm(request.POST)
 4         if form.is_valid():
 5             form.save()
 6             return redirect('/books/')
 7     form = BookForm()
 8     return render(request, 'book_add.html', locals())
 9 
10 
11 def book_edit(request, edit_book_id):
12     book_obj = Book.objects.filter(pk=edit_book_id).first()
13     if request.method == 'POST':
14         form = BookForm(request.POST, instance=book_obj)
15         if form.is_valid():
16             form.save()
17             return redirect('/books/')
18     form = BookForm(instance=book_obj)
19     return render(request, 'book_edit.html', locals())

 

 

 

转载于:https://www.cnblogs.com/xjmlove/p/9934473.html

该教程是毕业设计作品,主要基完成于ASP.NET三层架构图书借阅管理系统的设计与实现 本套课程为实战过程路线,包含整个系统的分析、设计全过程和配套源码,课程共55个课时,从最初的业务需求入手,一步步将整个系统的设计过程进行实现,课程包括界面设计和代码编写等整个制作过程的完整录像,因此对于学习ASP.NET三层架构和毕业设计制作的学员具有很好的指导作用。在对课题进行分析后,本教程汲取了图书借阅管理系统的优缺点,并进行创新和提高,在图书借阅管理等基础功能上,新增图书借阅统计图表、图书借阅黑名单、教师图书推荐、学生和教师的批量导入等功能,并对功能的业务逻辑和设计过程进行了详细的分析,该系统功能与传统图书借阅管理系统有很大的优势,方便学生进行论文的编写和制作,同时适合大多数院校的毕业设计要求。基于ASP.NET图书借阅管理系统主要功能包括图书类型管理、图书信息管理、学生信息管理、教师信息管理、图书借阅管理、黑名单管理、图书推荐管理、图书统计、管理员管理和借阅制度管理等。系统配套源码请在课程最后一节下载或联系讲师说明:如果需要答疑、咨询、答辩辅导、论文辅导降重、功能修改等服务请与导师协商,学员较多,无法提供免费服务。本套课程售价为859元  不需要源码的同学可享受活动价格优惠学习视频教程, 如需获取源码,当所有活动折扣/会员满减等最终售价低于课程价格时,请额外补足差价
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值