创建书籍表以及增删改查
一 、创建一个SQL中的book表单
1.在momodels.py中创建类book
class Book(models.Model): id = models.AutoField(primary_key=True) #主键 book_name = models.CharField(max_length=32) #书名 press = models.ForeignKey(to='Press', on_delete=models.CASCADE) # 外键to = Press
2.执行变更和创建两个命令
# 1. python manage.py makemigrations --> 找个小本本把models.py的变更记录一下 # 2. python manage.py migrate --> 把上面的变更记录翻译成SQL语句,去数据库执行
二、添加路由
在urls.py中添加 增删改查4个路径
url(r'^book_list/', views.book_list), url(r'^add_book/', views.add_book), url(r'^del_book/', views.del_book), url(r'^edit_book/', views.edit_book),
三 、 在views中添加对应的4个函数
def book_list(request): # 读数据库内容 book_data = Book.objects.all() # 传数据给html # html展示出来 return render(request, 'book_list.html', {'book_date': book_data}) def add_book(request): # 读书籍库把 所有的出版社展示出来 press_data = Press.objects.all() if request.method == 'POST': book_name = request.POST.get('book_name') press_id = request.POST.get('press_id') print(press_id) # 填写书籍 和选择出版社 Book.objects.create(book_name=book_name, press_id=press_id) return redirect('/book_list/') # 写进book表单曲 return render(request, 'add_book.html', {'press_data': press_data}) def del_book(request): #获取删除书的ID del_book_id = request.GET.get('id') print(del_book_id) #匹配数据库找到内容后删除 Book.objects.filter(id=del_book_id).delete() #跳转书籍展示列表 return redirect('/book_list/') # def edit_book(request): #从URL中获取要编辑的id edit_id = request.GET.get('id') #找到展示和修改的 ORM书的对象 edit_book_obj = Book.objects.get(id=edit_id) if request.method == "POST": new_press_id = request.POST.get('press_id') #获得前端出版社信息 new_book_name = request.POST.get('book_name') #获取前端的修改后的书的名字 # new_press_id , new_book_name = request.POST.get('press_id'), request.POST.get('book_name') edit_book_obj.book_name = new_book_name #修改数据库中书的名字 edit_book_obj.press_id = new_press_id #修改对应出版社对象 (外键就详单与对象中的组合) edit_book_obj.save() return redirect('/book_list/') press_data = Press.objects.all() return render(request,'edit_book.html',{'book_obj':edit_book_obj,'press_list':press_data})
四 、 在templates文件夹中添加对应的HTML文件
1. book_list.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>书籍展示</title> </head> <link rel="stylesheet" href="/static/bootstrap.css"> <body> <div class="container-fluid"> <div class="row"> <div class="col-md-8 col-md-offset-2"> <h1>书籍列表</h1> </div> </div> <div> <div class="progress col-md-8 col-md-offset-2"> <div class="progress-bar" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%;"> <span class="sr-only"></span> </div> </div> </div> </div> <div class="container-fluid"> <div class="row"> <div class="col-md-8 col-md-offset-2"> <table class="table table-bordered table-hover .active"> <thead> <tr class="modal-content"> <th class="text-center">序号</th> <th class="text-center">书id</th> <th class="text-center">书名称</th> <th class="text-center">出版社</th> <th class="text-center">删除操作</th> <th class="text-center">编辑操作</th> </tr> </thead> <tbody> {% for book in book_date %} {# ret 代表所有ORM对象,遍历生成下边样式的表格 #} <tr class="modal-content text-center"> <td>{{ forloop.counter }}</td> <td>{{ book.id }}</td> <td>{{ book.book_name }}</td> <td>{{ book.press.name }}</td> <td> <button type="button" class="btn btn-danger"><a href="/del_book/?id={{ book.id }}">删除</a></button> </td> <td> <button type="button" class="btn btn-danger"><a href="/edit_book/?id={{ book.id }}">编辑</a></button> </td> </tr> {% endfor %} </tbody> </table> <button type="button" class="btn btn-info"> <a href="/add_book/">点击添加书籍</a></button> </div> </div> </div> </body> </html>
2.add_book.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>添加书籍</title> <link rel="stylesheet" href="/static/bootstrap.css"> </head> <body> <form action="/add_book/" method="post"> <input type="text" name="book_name"> <select name="press_id" > {% for press in press_data %} <option value="{{ press.id }}">{{ press.name }}</option> {% endfor %} </select> <input type="submit"> </form> </body> </html>
3.edit-book.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>编辑</title> </head> <body> <h5>编辑</h5> <form action="/edit_book/?id={{ book_obj.id }}" method="post"> <input type="text" name="book_name" value="{{ book_obj.book_name }}"> <select name="press_id"> {% for press in press_list %} {% if book_obj.press == press %} <option selected value="{{ press.id }}">{{ press.name }}</option> {% else %} <option value="{{ press.id }}">{{ press.name }}</option> {% endif %} {% endfor %} </select> <input type="submit"> </form> </body> </html>
五 、 运行Django服务,打开网站进行验证