图书管理

2018-12-09  本文已影响0人  菜田的守望者w

from flask import Flask, render_template,request,flash

from flask_sqlalchemy import SQLAlchemy

from flask_wtf import FlaskForm

from wtforms import SubmitField,StringField

from wtforms.validators import DataRequired

app = Flask(__name__)

# 数据库配置:数据库地址/关闭自动跟踪修改

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://wan:mysql@127.0.0.1/flask_sql_demo'

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

app.secret_key='caitianseshouwangzhe'

# 创建数据库对象

db = SQLAlchemy(app)

"""

1、配置数据库

  a.导入SQLAlchemy

  b.创建db对象,并配置参数

  c.终端创建数据库

2. 添加书和作者模型

  a.模型继承db.Model

  b.__tablename__表名

  c.db.Colum字段

  d.relationship关系引用

3.添加数据

4,使用模板显示数据库查询的数据

    a.查询所有作者信息,让信息传递给模板

    b.模板中中按照格式,依次for循环作者和书籍即可(作者获取书籍,用的是关系引用)

5.使用WTF显示表单

6,实现相关的增删逻辑

"""

# 定义书和作者模型

# 作者模型

class Author(db.Model):

    # 表名

    __tablename__ = 'authors'

    id=db.Column(db.Integer, primary_key=True)

    name = db.Column(db.String(16), unique=True)

    # 关系引用

    book = db.relationship('Book',backref='author')

    def __repr__(self):

        return "Author:%s" % self.name

# 书籍类型

class Book(db.Model):

    __tablename__ = 'books'

    id = db.Column(db.Integer, primary_key=True)

    name = db.Column(db.String(16), unique=True)

    author_id = db.Column(db.Integer, db.ForeignKey('authors.id'))

    def __repr__(self):

        return 'Book:%s %s' % (self.name, self.author_id)

# 自定义表单

class LoginForm(FlaskForm):

    author = StringField('作者:',validators=[DataRequired()])

    book = StringField('书籍:',validators=[DataRequired()])

    submit = SubmitField('提交')

@app.route('/')

def hello_world():

    # 创建自定义表单类

    author_form = LoginForm()

    # 查询所有作者信息,让信息传递给模板

    if author_form.validate_on_submit():

        # 验证通过获取数据

        author_name = author_form.author.name

        bllk_name = author_form.book.name

        # 判断作者是否存在

        author = Author.query.filter_by(name=author_name).first()

        # 如果作者存在

        if author:

            pass

        else:

            # 如果作者不存在,添加作者和书籍

            pass

    else:

        if request.method == 'POST':

            flash('参数不全')

    author = Author.query.all()

    return render_template('books.html',author=author,author_form=author_form)

if __name__ == '__main__':

    db.drop_all()

    db.create_all()

    # 生成数据

    au1 = Author(name='黑柳彻子')

    au2 = Author(name='杨红樱')

    au3 = Author(name='尾田荣一郎')

    au4 = Author(name='莫言')

    au5 = Author(name='梁漱溟')

    au6 = Author(name='鲁迅')

    au7 = Author(name='路遥')

    db.session.add_all(au1,au2,au3,au4,au5,au6,au7)

    # 提交会话

    db.session.commit()

    bk1 = Book(name='窗边的小豆豆',author_id=au1.id)

    bk2 = Book(name='淘气包马小跳',author_id=au2.id)

    bk3 = Book(name='海贼王',author_id=au3)

    bk4 = Book(name='蛙',author_id=au4)

    bk5 = Book(name='我生有涯愿无尽',author_id=au5)

    bk6 = Book(name='我的藤野先生',author_id=au6)

    bk7 = Book(name='平凡的世界',author_id=au7)

    db.session.add_all([bk1,bk2,bk3,bk4,bk5,bk6,bk7])

    db.session.commit()

    app.run()

上一篇 下一篇

猜你喜欢

热点阅读