Flask的CURD
增删改查
增加
@book.route('/add',methods=["GET",'POST'])
def add():
if request.method == 'GET':
authors = Author.query.all()
return render_template('add.html',authors=authors)
else:
name = request.form.get('name')
price = request.form.get('price')
create_time = request.form.get('create_time')
author_id = request.form.get('author_id')
print(name)
book1 = Books(name=name,price=price,create_time=create_time,author_id=author_id)
db.session.add(book1)
db.session.commit()
# books = Books.query.all()
# return render_template('books.html', books=books)
return redirect('/book/readerall')
删除
@book.route('/delete/<int:id>')
def delete(id):
book1 = Books.query.get(id)
db.session.delete(book1)
db.session.commit()
# books = Books.query.all()
# return render_template('books.html', books=books)
return redirect('/book/readerall')
修改
@book.route('/update/<int:id>',methods=["GET","POST"])
def update(id):
if request.method == 'GET':
book1 = Books.query.get(id)
authors = Author.query.all()
return render_template('update.html',authors=authors,book1=book1)
else:
book1 = Books.query.get(id)
name = request.form.get('name')
price = request.form.get('price')
create_time = request.form.get('create_time')
author_id = request.form.get('author_id')
book1.name = name
book1.price = price
book1.create_time = create_time
book1.author_id = author_id
db.session.commit()
# books = Books.query.all()
# return render_template('books.html', books=books)
return redirect('/book/readerall')
查找
get方法为显示分页显示数据,post方法是查找书籍并分页显示
@book.route('/readerall',methods=['GET','POST'])
def reader_all():
if request.method == 'GET':
paginate = Books.query.paginate(1, 2) # 默认显示第1页 # 获取页数
page = int(request.args.get('page',1))
if page <= 0:
page = 1
if page >= paginate.pages: # 共3页, 输入30-->显示最大页3
page = paginate.pages #最大页数
paginate = Books.query.paginate(page, 2)# 重新查询
books = paginate.items # 当前页数据(默认是第1页数据)
return render_template('books.html',books=books,paginate=paginate)
else:
name = request.form.get('name')
print(Books.query.filter(Books.name.contains(name)))
paginate = Books.query.filter(Books.name.contains(name)).paginate(1,2)
books = paginate.items
return render_template('books.html',books=books,paginate=paginate)
前端页面显示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.pg li{
float: left; margin-left: 20px;list-style: none;}
</style>
</head>
<body>
<h1>书籍列表</h1>
<ul>
{% for item in books %}
<li>id:{{item.id}},书名:{{item.name}},作者名:{{item.author.name}} <a href="/book/delete/{{item.id}}">删除</a><a href="/book/update/{{item.id}}">修改</a></li>
{% endfor %}
</ul>
<a href="/book/add">增加</a>
<form action="/book/readerall" method="post">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
书名:<input type="text" name="name"><br>
<input type="submit" value="查找">
</form>
<ul class="pagination pagination-lg pg">
{% if paginate.has_prev %}
<li><a href="/book/readerall?page={{paginate.prev_num }}">«</a></li>
{% endif %}
{% for i in paginate.iter_pages() %}
{% if paginate.page == i %}
<li class="active"><a href="/book/readerall?page={{ i }}">{{ i }}</a></li>
{% else %}
<li><a href="/book/readerall?page={{ i }}">{{ i }}</a></li>
{% endif %}
{% endfor %}
{% if paginate.has_next %}
<li><a href="/book/readerall?page={{paginate.next_num }}">»</a></li>
{% endif %}
</ul>
<br>
<h3>当前第{{ paginate.page }}页</h3>
<h3>共{{ paginate.pages }}页</h3>
</body>
</html>