代码拉取完成,页面将自动刷新
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)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。