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 }}">&laquo;</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 }}">&raquo;</a></li>
    {% endif %}
</ul>
<br>
<h3>当前第{{ paginate.page }}页</h3>
<h3>共{{ paginate.pages }}页</h3>
</body>
</html>
posted @ 2020-11-09 19:44  yiChen__Cui  阅读(91)  评论(0编辑  收藏  举报