Flask-RESTful:开发REST API的工具; Flask-Bootstrap:集成前端Twitter Bootstrap框架; Flask-Moment:本地化日期和时间; Flask-Admin:简单而可扩展的管理接口的框架...例如:使用lower可以实现字符串转小写, 使用length可以获取列表长度。...validators=[DataRequired(), EqualTo('password', '密码输入不一致')]) input = SubmitField('提交') # 定义根路由视图函数,生成表单对象...DecimalField 文本字段,值为decimal.Decimal FloatField 文本字段,值为浮点数 BooleanField 复选框,值为True和False RadioField —组单选框 SelectField...SQLAlchemy是一个关系型数据库框架,它提供了高层的ORM和底层的原生数据库的操作。flask-sqlalchemy是一个简化了SQLAlchemy操作的flask扩展。
app.add_url_rule(‘/’,’hello’,hello_word) 第一个参数为路由根路由,第二个为子路由,第三个为所绑定的函数 url 路由也是很方便 和django差不多,直接用表示变量就好,默认是字符串...错误可以是应为没加secret_key,加上就好了,就可以正常的使用flash了 这个是给flash消息加密用的 如果出现了unicodedeodeerror错误就是assic编码的问题,flash消息字符串前面加...flask-wtf表单模块来创建表单并验证 *** 首先导入wtf模块 *** from flask_wtf import FlaskForm # 实现表单基类 接着导入form表单控件 from wtforms...import StringField,PasswordField,SelectField,SubmitField *** 然后用一个类去继承FlaskForm *** class LoginForm...*** db=SQLAlchemy(app) # 继承app名字 创建数据库的模型,继承制db class Role(db.Model): # 定义表明 __tablename__=’roles
from wtforms import Form from wtforms.fields import simple from wtforms import validators from wtforms...import widgets app = Flask(__name__, template_folder='templates') app.debug = True 二.生成form组件 class...DecimalField 文本字段, 值为decimal.Decimal FloatField 文本字段, 值为浮点数 BooleanField 复选框, 值为True 和 False RadioField 一组单选框 SelectField...可以支持很多表单的验证函数: 验证函数 说明 Email 验证是电子邮件地址 EqualTo 比较两个字段的值; 常用于要求输入两次密钥进行确认的情况 IPAddress 验证IPv4网络地址 Length 验证输入字符串的长度...‘1’, '男'),(‘2’, '女'),则下面的coerce则不用写 coerce=int # “1” “2” ) #这里是单选框 city = core.SelectField
当然,编写 HTML 代码并不是我们的主要工作,所以我们可以通过 Flask 的相关插件来自动生成这部分 HTML 代码。...WTForms WTForms 支持在 Python 中使用类定义表单,然后直接通过类定义生成对应的 HTML 代码,这种方式更加方便,而且也更易于重用。...Flask-WTF 将帮助我们更加方便的处理表单,包括表单的生成、解析、CSRF等等。..., SubmitField, SelectMultipleField, SelectField from wtforms.validators import DataRequired, EqualTo,...="submit"> PasswordField 密码文本字段 FileField 文件上传字段 SelectField
后台WTF编码 先看实例: from flask.ext.wtf import Form from wtforms import StringField, SubmitField, SelectField...from wtforms.validators import DataRequired class BookForm(Form): name = StringField('姓名', validators...=[DataRequired()]) phone = StringField('电话', validators=[DataRequired()]) photoset = SelectField...重点是: {{ wtf.quick_form(form) }} 我们利用wtf.quick_form函数自动生成了表单,非常cool对不对。 ...还挺不错的是不是。
使用pipenv引入WTForms pipenv install wtforms 使用WTForms需要自定义一个类继承wtforms提供的Form类,然后定义参数校验规则 from wtforms import...而COUNT的值属于可公开的配置,所以应该把配置文件拆分成secure.py和settings.py。...2.model first 使用建模工具,根据绘制的数据模型,生成数据表。DMA最爱 3.code first 在代码中创建业务模型(实体类),自动反向生成数据表。...程序员最爱 可以专注业务模型的设计,而不是数据库的设计 不需要关心数据库表以及数据库表是如何创建的,简化思维逻辑 数据库只是用来存储数据的,他的表之间的关系应该有业务来决定 3.ORM与Code...sqlalchemy 是一个类库,用于根据定义的model反向生成数据库表 Flask_SqlAlchemy 是Flask在sqlalchemy基础上封装的一个组件。
使用Flask-WTF需要配置密钥参数SECRET_KEY,必须开启CSRF_token CSRF_ENABLED可以防止CSRF,SECRET_KEY用于生成加密令牌。...CSRF防护会根据设置的密钥生成加密令牌 需要先安装此插件 pip install Flask-WTF 基本示例 先自定义一个表单类 继承自基类FlaskForm 导入所需的表单字段 from flask_wtf...import FlaskForm from wtforms import StringField, PasswordField, SubmitField app = Flask(__name__)...Text str 变长字符串,对较长或不限长度的字符串做了优化 Unicode unicode 变长Unicode字符串 UnicodeText unicode 变长Unicode字符串,对较长或不限长度的字符串做了优化...Boolean bool 布尔值 Date datetime.date 时间 Time datetime.datetime 日期和时间 LargeBinary str 二进制文件 常见列选项 选项名
DecimalField 文本字段,值为decimal.Decimal FloatField 文本字段,值为浮点数 BooleanField 复选框,值为True和False RadioField 一组单选框 SelectField...SECRET_KEY用来生成加密令牌,当CSRF激活的时候,该设置会根据设置的密匙生成加密令牌。 在HTML页面中直接写form表单: ? ?...这些内容可以定义在父模板中,子模板直接继承,而不需要重复书写。...{{ config.SQLALCHEMY_DATABASE_URI }} request 对象: 就是 Flask 中表示当前请求的 request 对象,request对象中保存了一次HTTP请求的一切信息...把字符串对象表示的消息加入到一个消息队列中,然后通过调用 get_flashed_messages() 方法取出。
Flask-WTF使用这个密钥生成加密令牌,再用令牌验证请求中表单数据的真伪。...DateField 文本字段,值为datetime.date格式 IntegerField 文本字段,值为整数 FloatField 文本字段,值为浮点数 SelectField 下拉列表 SubmitField...表单提交按钮 WTForms验证函数 验证函数 说明 Email 验证电子邮件地址 EqualTo 比较两个字段的值,常用于要求输入两次密码进行确认的情况 IPAddress 验证IPv4网络地址...Length 验证输入字符串的长度 NumberRange 验证输入的值在数字范围内 Optional 无输入值时跳过其他验证函数 Required 确保字段中有数据 Regexp 使用正则表达式验证输入值...假设视图函数把一个NameForm实例通过参数form传入模板,在模板中可以生成一个简单的表单,如下所示: {{ form.hidden_tag() }
SECRET_KEY 是一个字符串,它用于加密会话数据。三、路由Flask 应用程序的最基本的组成部分是路由。路由是一个 URL 和一个函数之间的映射关系。...3.2 路由参数在 Flask 中,你可以使用路由参数来动态地生成 URL。...四、模板Flask 使用 Jinja2 模板引擎来生成 HTML 页面。模板是一个包含占位符的文件,它可以动态地生成 HTML 页面。...以下是一个简单的表单示例:from flask_wtf import FlaskFormfrom wtforms import StringField, SubmitFieldfrom wtforms.validators...Flask 提供了一种简单而灵活的方式来使用数据库。6.1 安装数据库在 Flask 中,你可以使用 SQLAlchemy 库来操作数据库。
Part1:FlaskForm 是什么 说到 FlaskForm,首先得谈谈 WTForms 是什么。 WTForms 是一个 Flask 集成的框架,也可以说是库。用于处理浏览器表单提交的数据。...Flask-WTF 是集成 WTForms,并带有 csrf 令牌的安全表单和全局的 csrf 保护的功能。...每次我们在建立表单所创建的类都是继承于 Flask_WTF 中的 FlaskForm,而 FlaskForm 是继承 WTForms 中 Forms。...—文本字段,值为 decimal.Decimal 格式 FloatField—文本字段,值为浮点数 BooleanField—复选框,值为 True 和 False RadioField—一组单选框 SelectField...可以支持很多表单的验证函数: 验证函数说明 Email—验证是电子邮件地址 EqualTo—比较两个字段的值;常用于要求输入两次密钥进行确认的情况 IPAddress—验证 IPv4 网络地址 Length—验证输入字符串的长度
request.args.get('name', None)POST请求提交的表单:request.from.get('age', None)二、WTF表单WTF 表单是一个第三方的库,可以通过Python代码生成表单...,而Flask-WTF则是Flask集成了WTF表单功能的实现。...Flask-WTF可以实现这些功能,集成 wtforms。带有 csrf 令牌的安全表单。全局的 csrf 保护。支持验证码(Recaptcha)。与 Flask-Uploads 一起支持文件上传。...第一个表单模型在项目目录下新建一个form.py文件,专门用来编写表单模型,以登录表单为例,新增一个LoginForm对象,并增加相应的属性from flask_wtf import FlaskFormfrom wtforms...IntegerField,整数输入DecimalField,精确小数输入单选多选等选择相关类型 RadioField,radio单选SelectField,下拉单选SelectMultipleField
它的设计哲学是“保持简单,但不简单”,即提供足够的灵活性以适应各种应用场景,而不过分复杂。Flask是微框架,意味着它不会强制你使用特定的工具或库,你可以根据项目的需要来决定使用哪些扩展包。...Flask应用的生命周期:Flask应用的生命周期包括启动、请求处理、响应生成和应用结束。理解这些生命周期有助于优化应用性能和调试复杂问题。...应用上下文包含应用相关的配置信息,而请求上下文包含与当前请求相关的数据,如请求对象request和会话对象session。...username 和 email 是字符串字段,并且必须是唯一的(unique=True),且不能为空(nullable=False)。date_created 存储用户的创建时间,默认值为当前时间。...return render_template('login.html', form=form)generate_password_hash 用于生成用户密码的哈希值,并存储在数据库中。
request.args.get('name', None) POST请求提交的表单:request.from.get('age', None) 二、WTF表单 WTF 表单是一个第三方的库,可以通过Python代码生成表单...,而Flask-WTF则是Flask集成了WTF表单功能的实现。...Flask-WTF可以实现这些功能, 集成 wtforms。 带有 csrf 令牌的安全表单。 全局的 csrf 保护。 支持验证码(Recaptcha)。...在项目目录下新建一个form.py文件,专门用来编写表单模型,以登录表单为例,新增一个LoginForm对象,并增加相应的属性 from flask_wtf import FlaskForm from wtforms...,浮点数输入 IntegerField,整数输入 DecimalField,精确小数输入 单选多选等选择相关类型 RadioField,radio单选 SelectField,下拉单选 SelectMultipleField
Jinja2模板引擎 模板 在前面的示例中,视图函数的主要作用是生成请求的响应,这是最简单的请求。实际上,视图函数有两个作用:处理业务逻辑和返回响应内容。...这个模板引擎来渲染模板 使用模板的好处: 视图函数只负责业务逻辑和数据处理(业务逻辑方面) 而模板则取到视图函数的数据结果进行展示(视图展示方面) 代码结构清晰,耦合度低 Jinja2 两个概念 Jinja2...在Flask中,为了处理web表单,我们一般使用Flask-WTF扩展,它封装了WTForms,并且它有验证表单数据的功能 WTForms支持的HTML标准字段 字段对象 说明 StringField...DecimalField 文本字段,值为decimal.Decimal FloatField 文本字段,值为浮点数 BooleanField 复选框,值为True 和 False RadioField 一组单选框 SelectField...SECRET_KEY用来生成加密令牌,当CSRF激活的时候,该设置会根据设置的密匙生成加密令牌。
,具体指令如下 pip install flask-migrate ORM模型映射成表的三步 1、flask db init 只需执行一次 2、flask db migrate 识别ORM模型的改变,生成脚本...return "Hello" if __name__ == '__main__': #如果当前文件为主入口,就会往下运行 app.run() 首先执行flask db init,而后会生成...他们的关系如下图 而此时就会造成一个循环引用的问题,这样引用超过一定次数就会出现bug,而当引用exts.py后,它的关系如下所示 此时就完美解决了它的问题 然后呢,我们还需要一个蓝图文件夹,用于进行一个简单分类...url_prefix="/") @bp.route("/") def index(): pass 而后运行程序,访问auth/register路由 此时可以发现它是已经存在一个校验了,当我们输入的密码不是...比如我们在进行操作前想获取用户id,此时我们就可以去拦截一下然后获取用户id,将它放入某个变量中直接进行调用,而不需要再去数据库中进行查看,这样相比是比较方便的。
import Form from wtforms.fields import core from wtforms.fields import html5 from wtforms.fields import...choices=( (1, '男'), (2, '女'), ), coerce=int ) city = core.SelectField...CSRF标签 csrf = True # 生成CSRF标签name csrf_field_name = 'csrf_token' # 自动生成标签的值...= lambda x: request.url # 生成和比较csrf标签 csrf_class = MyCSRF # -- i18n...return field.widget(field, **render_kw) 执行字段的插件对象的 __call__ 方法,返回标签字符串
在Flask中,为了处理web表单,我们一般使用Flask-WTF扩展,它封装了WTForms,并且它有验证表单数据的功能。...安装Flask-WTF扩展 pip3 install Flask-WTF WTForms支持的HTML标准字段 字段对象 说明 StringField 文本字段 TextAreaField 多行文本字段...DecimalField 文本字段,值为decimal.Decimal FloatField 文本字段,值为浮点数 BooleanField 复选框,值为True和False RadioField 一组单选框 SelectField...常用验证函数 验证函数 说明 DataRequired 确保字段中有数据 EqualTo 比较两个字段的值,常用于比较两次密码输入 Length 验证输入的字符串长度 NumberRange 验证输入的值在数字范围内...SECRET_KEY用来生成加密令牌,当CSRF激活的时候,该设置会根据设置的密匙生成加密令牌。 直接在HTML页面写form表单的示例 1.
领取专属 10元无门槛券
手把手带您无忧上云