Python-Flask基础篇(二)

前言前面介绍了Flask和HTTP的基础知识,下面会介绍Flask的基础用法 第4章 表单在Web程序中,表单是和用户交互最常见的方式之一。用户注册、登录、撰写文章、编辑设置,无一不用到表单。不过,表单的处理却并不简单。你不仅要创建表单,验证用户输入的内容,向用户显示错误提示,还要获取并保存数据。幸运的是,强大的WTForms可以帮我们解决这些问题。WTForms是一个使用Python编写的表单库,它使得表单的定 义、验证(服务器端)和处理变得非常轻松。这一章我们会介绍在Web 程序中处理表单的方法和技巧。 使用Flask-WTF处理表单扩展Flask-WTF集成了WTForms,使用它可以在Flask中更方便地使用WTForms。Flask-WTF将表单数据解析、CSRF保护、文件上传等功能与Flask集成,另外还附加了reCAPTCHA支持。 Flask-WTF默认为每个表单启用CSRF保护,它会为我们自动生成和 验证CSRF令牌。默认情况下,Flask-WTF使用程序密钥来对CSRF令牌 进行签名,所以我们需要为程序设置密钥: 1app.secret_key = 'secret string' 定义WTForms表单类当使用WTForms创建表单时,表单由Python类表示,这个类继承从 WTForms导入的Form基类。一个表单由若干个输入字段组成,这些字 段分别用表单类的类属性来表示(字段即Field,你可以简单理解为表单 内的输入框、按钮等部件)。下面定义了一个LoginForm类,最终会生 成我们在前面定义的HTML表单: 12345678910from wtforms import Form, StringField, PasswordField, BooleanField, SubmitFieldfrom wtforms.validators import DataRequired, Length# 4.2.1 basic form exampleclass LoginForm(FlaskForm): username = StringField('Username', validators=[DataRequired()]) password = PasswordField('Password', validators=[DataRequired(), Length(8, 128)]) remember = BooleanField('Remember me') submit = SubmitField('Log in') 每个字段属性通过实例化WTForms提供的字段类表示。字段属性的名称将作为对应HTML<input>元素的name属性及id属性值。 当使用Flask-WTF定义表单时,我们仍然使用WTForms提供的字段类和验证器,创建的方式也完全相同,只不过表单类要继承Flask-WTF提供的FlaskForm类。FlaskForm类继承自Form类,进行了一些设置,并附加了一些辅助方法,以便与Flask集成。

技术

Python-Flask基础篇(一)

第1章 初识FlaskFlask介绍搭建开发环境,编写一个最小的Flask程序并运行它,了解 Flask基本知识 这一切开始于2010年4月1日,Armin Ronacher在网上发布了一篇关 于“下一代Python微框架”的介绍文章,文章里称这个Denied框架不依赖 Python标准库,只需要复制一份deny.py放到你的项目文件夹就可以开始 编程。伴随着一本正经的介绍、名人推荐语、示例代码和演示视频,这 个“虚假”的项目让不少人都信以为真。 5天后, Flask就从这么一个愚人节玩笑诞生了。

技术

Python-100天(三)-数据库基础和进阶

关系数据库入门

技术

Python-100天(二)-Python语言进阶

数据结构和算法 算法:解决问题的方法和步骤 评价算法的好坏:渐近时间复杂度和渐近空间复杂度。 渐近时间复杂度的大O标记: - 常量时间复杂度 - 布隆过滤器 / 哈希存储 - 对数时间复杂度 - 折半查找(二分查找) - 线性时间复杂度 - 顺序查找 / 桶排序 - 对数线性时间复杂度 - 高级排序算法(归并排序、快速排序) - 平方时间复杂度 - 简单排序算法(选择排序、插入排序、冒泡排序) - 立方时间复杂度 - Floyd算法 / 矩阵乘法运算 - 几何级数时间复杂度 - 汉诺塔 - 阶乘时间复杂度 - 旅行经销商问题 - NP

技术

Python-100天(一)

之前Python就已经学过了,Flask也玩的一溜一溜的。但是间隔时间有些长,所以就找个一个项目重新温习一下,顺便记录一下。这个系列文章会根据 Python - 100天 的流程走下去,当然其中有一些重复性的我就不介绍了,Django这个就不介绍了,因为跟Flask重复了,而且Django体量太大,不适合拿来用于学习。

技术