Flask框架 之简单图书馆demo

发布时间 2023-03-30 13:13:21作者: 样子2018

一、效果图

 

二、核心代码

 

 

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'))