一、效果图

二、核心代码

from flask import Blueprint, render_template, url_for, request, redirect
from app import db
from ..models import Author, Book
home = Blueprint('home', __name__)
from app.forms import AuthorBookForm
@home.route("/", methods=["GET", "POST"])
def index():
author_book_form = AuthorBookForm()
if request.method == 'POST':
# 验证表单数据是否合格
if author_book_form.validate_on_submit():
author_name = author_book_form.author_name.data
book_name = author_book_form.book_name.data
author = Author.query.filter_by(name=author_name).first()
if author is None:
author = Author(name=author_name)
db.session.add(author)
db.session.commit()
# 判断是否已经存在书籍
book = Book.query.filter_by(name=book_name).first()
if book is None:
book = Book(name=book_name, author_id=author.id)
db.session.add(book)
db.session.commit()
return redirect(url_for('.index'))
author = Author.query.all()
print(author)
return render_template("index.html", authors=author, form=author_book_form)
@home.route("/delete_book")
def delete_book():
book_id = request.args.get("book_id")
book = Book.query.get(book_id)
db.session.delete(book)
db.session.commit()
# 判断是否没有书籍了,删除作者
all_book = Book.query.filter_by(author_id=book.author_id).all()
if len(all_book) == 0:
author = Author.query.get(book.author_id)
db.session.delete(author)
db.session.commit()
return redirect(url_for('.index'))