zoukankan      html  css  js  c++  java
  • 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:mysql@127.0.0.1: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>
      

        

  • 相关阅读:
    C#使用RSA私钥加密公钥解密的改进,解决特定情况下解密后出现乱码的问题
    安装阿里旺旺2008会导致IE Webcontrols在客户端显示不正常
    Windows7的KB2488113补丁很重要,解决Windows7下软件无响应的问题
    使用csExWB Webbrowser 控件获取HttpOnly的cookie
    CacheControl:nocache 会导致ie浏览器无法保存正确的图片类型
    C#版 分页导航条
    dx ASPxGridView的增,删,改,查,数据绑定,外观显示,功能设定,分页
    js 简易评分控件
    js 密码强弱的实现
    js 动态添加事件
  • 原文地址:https://www.cnblogs.com/alicelai1319/p/10281494.html
Copyright © 2011-2022 走看看