文件目录结构
./
├── main.py
├── templates
│ └── index.html
└── static
└── js
└── jquery-3.3.1.min.js
一共涉及三个文件
1、jquery-3.3.1.min.js 可百度下载
2、 main.py
# -*- coding: utf-8 -*-
from flask import Flask, render_template, request, url_for, redirect, jsonify
from flask_sqlalchemy import SQLAlchemy
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
app = Flask(__name__)
# 配置数据库信息
class Config(object):
SQLALCHEMY_DATABASE_URI = "mysql://root:123456@127.0.0.1:3306/demo"
SQLALCHEMY_TRACK_MODIFICATIONS = True
SECRET_KEY = "adsfasdf9932@@fdsafsdaf"
app.config.from_object(Config)
db = SQLAlchemy(app)
class Author(db.Model):
"""作者"""
__tablename__ = "tbl_author"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(32))
books = db.relationship("Book", backref="author")
class Book(db.Model):
"""书籍"""
__tablename__ = "tbl_book"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64))
author_id = db.Column(db.Integer, db.ForeignKey("tbl_author.id"))
def db_init():
"""
初始化数据库
mysql> create database demo default charset utf8;
"""
db.drop_all()
db.create_all()
author1 = Author(name="吴承恩")
author2 = Author(name="施耐庵")
author3 = Author(name="罗贯中")
author4 = Author(name="曹雪芹")
db.session.add_all([author1, author2, author3, author4])
db.session.commit()
book1 = Book(name="西游记", author=author1)
book2 = Book(name="红楼梦", author=author4)
book3 = Book(name="三国演义", author=author3)
book4 = Book(name="水浒传", author=author2)
db.session.add_all([book1, book2, book3, book4])
db.session.commit()
class AuthorBookForm(FlaskForm):
"""作者书籍表单"""
author_name = StringField(label="作者姓名", validators=[DataRequired("作者姓名不能为空")])
book_name = StringField(label="书籍名称", validators=[DataRequired("书籍名称不能为空")])
submit = SubmitField(label="提交")
# 视图函数
@app.route("/", methods=["GET", "POST"])
def index():
form = AuthorBookForm()
# 验证表单
if form.validate_on_submit():
author_name = form.author_name.data
book_name = form.book_name.data
# 保存数据
author = Author(name=author_name)
db.session.add(author)
db.session.commit()
book = Book(name=book_name, author=author)
db.session.add(book)
db.session.commit()
# 查询数据
authors = Author.query.all()
return render_template("index.html", authors=authors, form=form)
@app.route("/deleteBook", methods=["POST"])
def delete_book():
"""删除书本数据
接收json格式的数据 contentType: application/json
"""
data = request.json
book_id = data.get("bookId")
book = Book.query.get(book_id)
db.session.delete(book)
db.session.commit()
data = {
"code": 0,
"message": "delete success"
}
return jsonify(data)
@app.route("/deleteAuthor")
def delete_author():
"""删除作者书籍"""
author_id = request.args.get("authorId")
author = Author.query.get(author_id)
db.session.delete(author)
db.session.commit()
return redirect(url_for("index"))
if __name__ == '__main__':
# db_init()
app.run(debug=True)
3、index.html
Title
{{ form.csrf_token }}
{{ form.author_name.label }}
{{ form.author_name }}
{% for msg in form.author_name.errors %}
{{ msg }}
{% endfor %}
{{ form.book_name.label }}
{{ form.book_name }}
{% for msg in form.book_name.errors %}
{{ msg }}
{% endfor %}
{{ form.submit }}
{% for author in authors %}
作者:{{ author.name }}
关注
打赏