Flask--(一对多)模型渲染表单数据

Posted alicelai1319

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask--(一对多)模型渲染表单数据相关的知识,希望对你有一定的参考价值。

模型建立一一对多模型:

  1. 多表添加外键,建立两张表之间的关系
  2. 一表关联多表的属性,可以方便快速访问多表的数据
  3. 模板一层循环渲染一表数据,二层循环渲染多表的数据
  4. 代码展示:
    from  flask import Flask
    
    # Flask参数,可以配置静态文件路由,及文件夹
    from flask import render_template
    from flask.ext.sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    app.config[SQLALCHEMY_DATABASE_URI] = mysql://root:[email protected]:3306/test2
    app.config[SQLALCHEMY_TRACK_MODIFICATIONS] = True
    
    db = SQLAlchemy(app)
    
    class Author(db.Model):
        __tablename__ = author
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(32), unique=True)
        au_book = db.relationship(Books, backref=author)
    
        def __repr__(self):
            return ("Author:%s")%self.name
    
    
    class Books(db.Model):
        __tablename__ = books
        id = db.Column(db.Integer,primary_key=True)
        name = db.Column(db.String(64),unique=True)
        author_id = db.Column(db.Integer,db.ForeignKey(author.id))
    
        def __str__(self):
            return ("Books:%s")%self.name
    
    @app.route("/books")
    def index():
        authors = Author.query.all()
    
        return render_template(books.html,authors=authors)
    
    
    if __name__ == "__main__":
        
        app.run(debug=True)

     

  5. 模板代码显示:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>图书管理</title>
    </head>
    <body>
    <h1>图书管理系统</h1>
    <br>
    <ul>
        {% for author in authors %}
            <li>{{ author.name }}</li>
            <ul>
            {% for book in author.au_book %}
                <li>{{ book.name }}</li>
                {% endfor%}
            </ul>
        {% endfor %}
    </ul>
    </body> </html>

     

  6. 渲染表单数据
    class AddBookForm(FlaskForm):
        author = StringField(作者,validators=[InputRequired(请输入作者)])
        book = StringField(书籍,validators=[InputRequired(请输入书名)])
        submit = SubmitField(添加)
    
    @app.route("/books")
    def index():
        book_author_form = AddBookForm()
        authors = Author.query.all()
    
        return render_template(books.html,authors=authors,form=book_author_form)

     

  7. 模板中渲染表单数据
    <form action="post">
        {{ form.csrf_token() }}<br>
        {{ form.author.label }}{{ form.author }}<br>
        {{ form.book.label }}{{ form.book }}<br>
        {{ form.submit }}
    </form>
    

      

 


以上是关于Flask--(一对多)模型渲染表单数据的主要内容,如果未能解决你的问题,请参考以下文章

Flask:06-一首歌的时间掌握flask数据模型(02)

Flask框架从入门到精通之模型关系(十七)

Flask框架从入门到精通之模型关系(十七)

Flask 学习-84.Flask-SQLAlchemy 一对多关系级联删除

Flask 学习-84.Flask-SQLAlchemy 一对多关系级联删除

深入浅出Flask(49):flask_sqlalchemy的创建一对多的关系表