Django图书管理系统3

添加作者的增删改查

一、添加数据表

在app01文件下边的models文件中添加一个类

class Author(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=32)
    books= models.ManyToManyField(to='Book')

执行

  1. python manage.py makemigrations   --> 找个小本本把models.py的变更记录一下

  2. python manage.py migrate --> 把上面的变更记录翻译成SQL语句,去数据库执行

二、添加路由

  

url(r'^author_list/$', views.author_list),
url(r'^add_author/$', views.add_author),
url(r'^del_author/$', views.del_author),
url(r'^edit_author/$', views.edit_author),

#上传功能
url(r'^upload/$', views.upload),

  

三、添加对应函数

1.作者展示列表的函数

def author_list(request):
    # 2 . 获取作者的ORM对象
    author_obj_list = Author.objects.all()

    #返回一author的网页表
    return render(request,'author_list.html',{'author_obj_list':author_obj_list})   #把所有的作者和书籍展示出来

2.增加作者函数

def add_author(request):
    # 2. 把所有书都展示对用户
    #获取所有的书籍
    book_obj_list = Book.objects.all()

    # 用户提交请求时post
    if request.method =='POST':
        add_author_name = request.POST.get('author_name')   #获取作者名字
        add_book_ids = request.POST.getlist('book_ids')        # 获取作者写的书(一定要用getlist   不然只能获取最后一本书)

        # A = Author.objects.create(name=add_author_name)
        # A.books.set(add_book_ids)

        Author.objects.create(name=add_author_name).books.set(add_book_ids)    #利用ORM把数据写入数据库表中
        return redirect('/author_list/')

    # 1 .第一次返回用户一个页面
    return render(request,'add_author.html',{'book_obj_list':book_obj_list})

3.删除作者函数

def del_author(request):
    # 获得删除对象的id
    del_author_id = request.GET.get('id')

    #删除sql表中的数据
    Author.objects.get(id=del_author_id).delete()

    # 跳转回author_lsit面页
    return redirect('/author_list/')

4.编辑作者函数

def edit_author(request):
    # 1.先获取要编辑的id
    edit_id = request.GET.get('id')   #第一次获得要编辑的id
    author_obj = Author.objects.get(id=edit_id)   #获得要编辑表中作者的orm对象
    if request.method =='POST':
        edit_author_name = request.POST.get('author_name')
        edit_book_ids = request.POST.getlist('book_obj_ids')    #拿到数据


        author_obj.name = edit_author_name   #修改作者
        author_obj.save()    #改自己的表要保存下

        author_obj.books.set(edit_book_ids)  #修改第三联系表
        return redirect('/author_list/')
    #第一次返回一个html网页
    # 需要对应的作者,书名
    book_obj_list = Book.objects.all()
    return render(request,'edit_author.html',{'book_obj_list':book_obj_list,'author_obj':author_obj})

 5.上传功能

def upload(request):
    if request.method == 'POST':   #提交表单是post
        file_obj = request.FILES.get('name')   #获得 文件 对象
        print(file_obj)
        file_name = file_obj.name
        print(file_name)
        if os.path.exists(os.path.join(settings.BASE_DIR,file_name)):
            #分析 OS.path.exists 路径存在为true,不存在未false, 文件名字 拼接 项目路径
            #加起来就是项目路径下彼岸是否存在和我文件重名的文件
            name,suffix = file_name.split('.')
            name += '1'
            file_name = name  + '.' + suffix
        with open(file_name,'wb') as f:
            for chunk in file_obj.chunks():
                f.write(chunk)
    #第一次给用户一个界面
    return render(request,'upload.html')

猜你喜欢

转载自www.cnblogs.com/clbao/p/9756341.html