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>
    

      

原文地址:https://www.cnblogs.com/alicelai1319/p/10281494.html

时间: 2024-11-12 02:05:29

Flask--(一对多)模型渲染表单数据的相关文章

【flask】处理表单数据

 表单数据的处理涉及很多内容,除去表单提交不说,从获取数据到保存数据大致会经历以下步骤: 解析请求,获取表单数据. 对数据进行必要的转换,比如将勾选框的植转换为Python的布尔值. 验证数据是否符合要求,同时验证CSRF令牌 如果验证未通过则需要生成错误消息,并在模板中显示错误消息. 如果通过验证,就把数据保存到数据库或做进一步处理. 验证表单数据 1. 客户端验证和服务器端验证表单的验 证通 常分为 以下两种形式:( 1)客户端验证客户端验证( client side validation)

flask 使用宏渲染表单(包含错误信息)

在模板中渲染表单时,有大量的工作: 1.调用字段属性,获取<input>定义 2.调用对应的label属性,获取<label>定义 3.渲染错误消息 为了避免为每一个字段重复这些代码,我们可以创建一个宏来渲染表单字段 macro.html: {% macro form_field(field) %} {{ field.label }}<br> {{ field(**kwargs) }}<br> {% if field.errors %} {% for err

【ASP.NET Web API教程】5.2 发送HTML表单数据:URL编码的表单数据

注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本系列教程,请先看前面的内容. 5.2 Sending HTML Form Data 5.2 发送HTML表单数据 本文引自:http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-1 By Mike Wasson|June 15, 2012 作者:Mike Wasson | 日期:2012-6-15 Part

【flask】使用Flask-WTF处理表单

 我的理解是Flask-WTF与html文件的关系就如同SQLAlchemy与数据库之间的关系. 通过python Form类,生成html代码,并在html模板文件中通过{{}}变量的方式引用这些生成的html代码 好处就是可以使用python类管理html的表单,而不需要自己去敲html代码 flask的处理机制: 定义WTForms表单类 输出HTML代码 在模板中渲染表单 实例: basic.html <!DOCTYPE html> <html lang="en&quo

WebApi发送HTML表单数据:文件上传与多部分MIME

5.3 Sending HTML Form Data5.3 发送HTML表单数据(2) 本文引自:http://www.cnblogs.com/r01cn/archive/2012/12/20/2826230.html By Mike Wasson|June 21, 2012作者:Mike Wasson | 日期:2012-6-21 Part 2: File Upload and Multipart MIME第2部分:文件上传与多部分MIME This tutorial shows how to

(转)WebApi发送HTML表单数据:文件上传与多部分MIME

5.3 Sending HTML Form Data5.3 发送HTML表单数据(2) 本文引自:http://www.cnblogs.com/r01cn/archive/2012/12/20/2826230.html By Mike Wasson|June 21, 2012作者:Mike Wasson | 日期:2012-6-21 Part 2: File Upload and Multipart MIME第2部分:文件上传与多部分MIME This tutorial shows how to

使用jQuery实现跨域提交表单数据

我们在WEB开发中有时会遇到这种情况,比如要从A网站收集用户信息,提交给B网站处理,这个时候就会涉及到跨域提交数据的问题.本文将给您介绍如何使用jQuery来实现异步跨域提交表单数据. 在jQuery中,我们使用json数据类型,通过getJSON方法来实现从服务端获取或发送数据,而当要向不同远程服务器端提交或者获取数据时,要采用jsonp数据类型.使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面.服务器端应当在JSON数据前加上回调函数名,以便

Struct2提交表单数据到Acion

Struct2提交表单数据到Action,Action取表单的数据,传递变量.对象 HTML.jsp <form action="reg.do" method="post"> <input> LoginAction get post 1.action里通过属性获取get.set方法获取. 2.模型驱动 3.model对象 action中要有和表单域对应的属性名,并且要有相应的符合javabean规范的set和get方法 http://blog

jQuery 序列化表单数据 serialize() serializeArray()

1.serialize()方法 格式:var data = $("form").serialize(); 功能:将表单内容序列化成一个字符串. 这样在ajax提交表单数据时,就不用一一列举出每一个参数.只需将data参数设置为 $("form").serialize() 即可. 2.serializeArray()方法 格式:var jsonData = $("form").serializeArray(); 功能:将页面表单序列化成一个JSON