1 Star 0 Fork 0

xmge/flask-web

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
app.py 3.25 KB
一键复制 编辑 原始数据 按行查看 历史
xmge 提交于 2025-01-18 15:11 +08:00 . 图书管理系统
from flask import Flask, render_template, request, redirect, url_for, flash
from flask_sqlalchemy import SQLAlchemy
from flask_bootstrap import Bootstrap
from config import Config
from models import db, Author, Book, Loan
from datetime import date, datetime
def create_app():
app = Flask(__name__)
app.config.from_object(Config)
bootstrap = Bootstrap(app)
db.init_app(app)
with app.app_context():
# Initialize the database here
db.create_all()
@app.context_processor
def inject_bootstrap():
return dict(bootstrap=bootstrap)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/authors')
def authors():
all_authors = Author.query.all()
return render_template('author.html', authors=all_authors)
@app.route('/books')
def books():
db.session.expire_all()
all_books = Book.query.all()
all_authors = Author.query.all()
return render_template('book.html', books=all_books, authors=all_authors)
@app.route('/loans')
def loans():
all_loans = Loan.query.all()
available_books = Book.query.filter(~Book.loans.any()).all()
today = date.today().strftime('%Y-%m-%d')
return render_template('loan.html',
loans=all_loans,
available_books=available_books,
today=today)
@app.route('/add_author', methods=['POST'])
def add_author():
new_author = Author(name=request.form['name'])
db.session.add(new_author)
db.session.commit()
return redirect(url_for('authors'))
@app.route('/add_book', methods=['POST'])
def add_book():
try:
new_book = Book(
title=request.form['title'],
published_date=request.form['published_date'],
author_id=request.form['author_id']
)
print("new_book: ", new_book)
db.session.add(new_book)
db.session.commit()
db.session.refresh(new_book)
flash('图书添加成功!', 'success')
except ValueError as e:
print(e)
flash('日期格式无效!', 'danger')
except Exception as e:
print(e)
flash('添加图书失败!', 'danger')
db.session.rollback()
return redirect(url_for('books'))
@app.route('/add_loan', methods=['POST'])
def add_loan():
new_loan = Loan(
user_name=request.form['user_name'],
loan_date=datetime.strptime(request.form['loan_date'], '%Y-%m-%d').date()
)
book = Book.query.get(request.form['book_id'])
if book:
new_loan.books.append(book)
db.session.add(new_loan)
db.session.commit()
return redirect(url_for('loans'))
@app.route('/return_loan/<int:loan_id>', methods=['POST'])
def return_loan(loan_id):
loan = Loan.query.get_or_404(loan_id)
loan.return_date = date.today()
db.session.commit()
return redirect(url_for('loans'))
return app
if __name__ == '__main__':
app = create_app()
SERVER_PORT=9999
app.run(host='0.0.0.0', port=SERVER_PORT, debug=True)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/PatrickW/flask-web.git
git@gitee.com:PatrickW/flask-web.git
PatrickW
flask-web
flask-web
master

搜索帮助