Flask--(一对多)模型渲染表单数据
模型建立一一对多模型:
- 多表添加外键,建立两张表之间的关系
- 一表关联多表的属性,可以方便快速访问多表的数据
- 模板一层循环渲染一表数据,二层循环渲染多表的数据
- 代码展示:
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) - 模板代码显示:
<!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> - 渲染表单数据
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) - 模板中渲染表单数据
<form action="post">
{{ form.csrf_token() }}<br>
{{ form.author.label }}{{ form.author }}<br>
{{ form.book.label }}{{ form.book }}<br>
{{ form.submit }}
</form>
Flask--(一对多)模型渲染表单数据的更多相关文章
- flask 在模板中渲染表单
在模板中渲染表单 为了能够在模板中渲染表单,我们需要把表单类实例传入模板.首先在视图函数里实例化表单类LoginForm,然后再render_template()函数中使用关键脑子参数form将表单实 ...
- [Flask]通过render_form快捷渲染表单
依赖: Bootstrap-Flask 实例化方式与flask_bootstrap相同. 关于render_form(): Bootstrap-Flask内置了两个用于渲染WTForms表单类的宏,r ...
- flask 处理表单数据
处理表单数据 表单数据的处理涉及很多内容,从获取数据到保存数据大致有以下步骤: 1. 解析请求,获取表单数据 2. 对数据进行必要的转换,比如讲勾选框的值转换成python的布尔值 3. 验证数 ...
- 【flask】处理表单数据
表单数据的处理涉及很多内容,除去表单提交不说,从获取数据到保存数据大致会经历以下步骤: 解析请求,获取表单数据. 对数据进行必要的转换,比如将勾选框的植转换为Python的布尔值. 验证数据是否符合 ...
- json数据渲染表单元素出现的问题
解析页面表单元素 parseForm: function () { var data = {}; $(this).find('input').each(function () { switch ($( ...
- flask用宏渲染表单模板时,表单提交后,如果form.validate_on_submit()返回的是false的可能原因
flask用宏渲染表单模板时,表单提交后,提交的内容符合DataRequired()校验, 但是form.validate_on_submit()返回的是False, 原因可能是表单模板中的<f ...
- flask 使用宏渲染表单(包含错误信息)
在模板中渲染表单时,有大量的工作: 1.调用字段属性,获取<input>定义 2.调用对应的label属性,获取<label>定义 3.渲染错误消息 为了避免为每一个字段重复这 ...
- 【ASP.NET Web API教程】5.2 发送HTML表单数据:URL编码的表单数据
原文:[ASP.NET Web API教程]5.2 发送HTML表单数据:URL编码的表单数据 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本系列教程,请先看前面的内 ...
- Flask - WTF和WTForms创建表单
目录 Flask - WTF和WTForms创建表单 一. Flask-WTF 1.创建基础表单 2.CSRF保护 3.验证表单 4.文件上传 5.验证码 二. WTForms 1. field字段 ...
随机推荐
- 机器学习 之KNN近邻法
目录 1.KNN近邻法 1.KNN近邻法 KNN模型由三个基本要素决定: 距离度量:其中欧式距离一般误差最小,\(x_{i} 和 x_{j}\)为两个样本点:\[L_{2}(x_{i}, x_{j}) ...
- (01) 什么是Spring Boot
1.Spring Boot 是spring家族的全新框架: Spring Boot 是简化spring 应用程序的创建和开发过程, 也就是说Spring Boot 能够简化之前采用ssh, ssm框架 ...
- Vue-- 监听路由变化,数据无法更新?
之前写的Vue项目,有个问题困扰了好久.新闻板块有推荐.精华.最新等几个Tab,设想通过切换Tab,改变路由参数(get/news/:tab)去获取对应数据,然后渲染到页面(用的是同一套组件),问题来 ...
- Android基础知识(一)
前言 前言 从软件测试最终目的发现问题缺陷来看,Findyou比较认同一个观念,测试的能力大致可以划分成三个能力层次:发现问题.定位问题.预防问题.有机会探讨一下这个分类. 发现问题各种方式方法,比如 ...
- 线程基础:多任务处理——MESI协议以及带来的问题:伪共享
1.概述 本文和后续文章将着眼CPU的工作原理阐述伪共享的解决方法和volatile关键字的应用. 2.复习CPU工作原理2.1.CPU工作原理要清楚理解本文后续内容,就需要首先重新概述一下JVM的内 ...
- CSS图形——实现圆角
css实现圆角 css2.1给元素添加圆角是一件很麻烦的事,老办法是用背景图片实现,制作比较麻烦.css3,border-radius的属性,使圆角属性得到完美的解决. 语法 border-radiu ...
- 你了解大O符号(big-O notation)么?你能给出不同数据结构的例子么?
大O符号表示当数据结构的元素增加的时候,算法规模或者性能在最坏场景下有多好. 大O符号也可以用来描述其他行为,比如说内存消耗.因为集合实际上就是一种数据结构,我们一般用大O符号基于时间.性能.内存消耗 ...
- ubuntu1604使用之旅——启动ssh系列
---恢复内容开始--- 1.安装ssh的client和server: sudo apt-get install openssh-server openssh-client 2.然后就要安装key: ...
- git安装及基本用法
安装: 1先安装客户端,选择默认路径,直接下一步就可以了 2安装图形化客户端,选择默认路径安装完成 基本用法: 1同步coding上的文件 在桌面上点击鼠标右键,并选择Git Clone... 打开下 ...
- Js 编程题汇总
Coding题: 1. 预测以下代码的输出结果: var Foo = function(a) { function bar() { console.log(a); }; this.baz = func ...