随笔分类 -  Flask

学习flask的笔记
摘要:异步发送邮件 当使用SMTP的方式发送电子邮件时,如果你手动使用浏览器测试程序的注册功能,在提交注册表单后,浏览器会有几秒钟的不响应。因为这时候程序正在发送电子邮件,发信的操作阻断了请求--响应循环,直到发信的send_mail()函数调用结束后,视图函数才会返回响应。这几秒的延迟带了不好的用户体验 阅读全文
posted @ 2019-04-22 22:30 夏晓旭 阅读(1966) 评论(0) 推荐(1)
摘要:电子邮件进阶实践 下面来学习构建邮件的HTML正文,并使用模板组织内容。 一封电子邮件的正文可以是纯文本(text/plain),也可以是HTML格式的文本(text/html)。处于全面的考虑,一封邮件应该既包含纯文本正文又包含HTML格式的正文。HTML格式的正文将被优先读取;加入收信人的邮件系 阅读全文
posted @ 2019-04-20 22:42 夏晓旭 阅读(1417) 评论(0) 推荐(0)
摘要:电子邮件 在web程序中,经常会需要发送电子邮件。比如,在用户注册账户时发送确认邮件;定期向用户发送热门内容或是促销信息等等。在Web程序中发送电子邮件并不复杂,借助扩展Flask-Mail或是第三方邮件服务,只需要几行代码就可以发送邮件。 下面例子中,我们使用一封示例邮件,邮件仅包含几个必要的字段 阅读全文
posted @ 2019-04-14 20:58 夏晓旭 阅读(7756) 评论(0) 推荐(1)
摘要:在flask中,我们可以使用Flask提供的过个装饰器注册请求回调函数,他们会在特定的请求处理环节被执行。类似的,SQLAlchemy也提供了一个listen_for()装饰器,他可以用来注册时间回调函数。 listen_for()装饰器主要接收两个参数,target表示监听的对象,这个对象可以是模 阅读全文
posted @ 2019-04-13 22:56 夏晓旭 阅读(1429) 评论(0) 推荐(0)
摘要:数据库进阶实践 Cascade意为“级联操作”,就是在操作一个对象的同时,对相关的对象也执行某些操作。我们通过一个Post模型和Comment模型来演示级联操作,分别表示文章(帖子)和评论,两者是一对多关系: 级联行为通过关系函数relationship()的cascade参数设置。我们希望在操作P 阅读全文
posted @ 2019-04-13 22:52 夏晓旭 阅读(1717) 评论(0) 推荐(0)
摘要:最近在练习用flask_mail发送163邮件时报错: reply: '553 authentication is required,163 smtp9,DcCowAD3eEQZ561caRiaBA--.47S2 1554900770\r\n'reply: retcode (553); Msg: a 阅读全文
posted @ 2019-04-10 21:39 夏晓旭 阅读(2075) 评论(0) 推荐(0)
摘要:在开发时,以删除表再重建的方式更新数据库简单直接,但明显的缺陷是会丢掉数据库中的所有数据。在生产环境下,没有人想把数据都删除掉,这时需要使用数据库迁移工具来完成这个工作。SQLAlchemy的开发者Michael Bayer写了一个数据库迁移工作—Alembic来帮助我们实现数据库的迁移,数据库迁移 阅读全文
posted @ 2019-04-03 22:39 夏晓旭 阅读(12730) 评论(0) 推荐(0)
摘要:flask 操作数据时,db的要在app.config设置之后声明:如app.config['SQLALCHEMY_DATABASE_URI'] 否则,运行程序时app.config里面做的设置就不会生效,就会提示各种参数没做设置 因为db在声明的时候解释器就会去读数据库URI的值,如果此时没有读到 阅读全文
posted @ 2019-04-03 21:40 夏晓旭 阅读(5561) 评论(0) 推荐(0)
摘要:更新书库库表 模型类(表)不是一成不变的,当你添加了新的模型类,或是在模型类中添加了新的字段,甚至是修改了字段的名称或类型,都需要更新表。在前面我们把数据库表比成盛放货物的货架,这些货架是固定生成的。当我们在操控程序(DBMS/ORM)变更了货架的结构时,仓库的货架也要根据变化相应进行调整。而且,当 阅读全文
posted @ 2019-04-02 22:38 夏晓旭 阅读(2962) 评论(0) 推荐(0)
摘要:我们使用学生和老师来演示多对多关系:每个学生有多个老师,每个老师有多个学生。多对多关系示意图如下: 在实例程序中,Student类表示学生,Teacher类表示老师。在这两个模型之间建立多对多关系后,我们需要在Student类中添加一个集合关系属性teachers,调用它可以获取某个学生的多个老师, 阅读全文
posted @ 2019-04-02 22:35 夏晓旭 阅读(1684) 评论(0) 推荐(0)
摘要:我们将使用国家和首都来演示一对一关系:每个国家只有一个首都。反过来,一个城市也只能作为一个国家的首都。一对一关系如下: 在示例程序中,Country类表示国家,Capital类表示首都。建立一对一关系后,我们将在Country类中创建一个标量关系capital,调用它会获取单个Capital对象,我 阅读全文
posted @ 2019-03-28 22:52 夏晓旭 阅读(1005) 评论(0) 推荐(0)
摘要:一对多关系反过来就是多对一关系,这两种关系模式分别从不同的视角出发。一个作者拥有多篇文章,反过来就是多篇文章属于同一个作者。为了便于区分,我们使用居民和城市来演示多对一关系:多个居民住在同一个城市。多对一关系如下: 在例子中,Citizen类表示居民,City类表示城市。建立多对一关系后,我们将在C 阅读全文
posted @ 2019-03-28 22:45 夏晓旭 阅读(494) 评论(0) 推荐(0)
摘要:定义关系 在关系型数据库中,我们可以通过关系让不同表之间的字段建立联系。一般来说,定义关系需要两步,分别是创建外键和定义关系属性。在更复杂的多对多关系中,我们还需要定义关联表来管理关系。下面我们学习用SQLAlchemy在模型之间建立几种基础的关系模式。 在上面的操作中,每一次使用flask she 阅读全文
posted @ 2019-03-25 23:21 夏晓旭 阅读(2460) 评论(0) 推荐(0)
摘要:在视图函数里操作数据库 在视图函数里操作数据的方式和在python shell中的联系基本相同,只不过需要一些额外的工作。比如把查询结果作为参数 传入模板渲染出来,或是获取表单的字段值作为提交到数据库的数据。接下来,我们将把前面学习的所有数据库操作知识运用到一个简单的笔记程序中。这个程序可以用来创建 阅读全文
posted @ 2019-03-25 23:06 夏晓旭 阅读(1635) 评论(0) 推荐(0)
摘要:数据库操作 现在我们创建了模型,生成了数据库和表,下面来学习常用的数据库操作,数据库操作主要是CRUD,即Create(创建)、Read(读取/查询)、Update(更新)和Delete(删除)。 SQLAlchemy使用数据库会话来管理数据库操作,这里的数据库会话也称为事务(transaction 阅读全文
posted @ 2019-03-25 23:01 夏晓旭 阅读(18837) 评论(0) 推荐(0)
摘要:使用Flask-SQLAlchemy管理数据库 扩展Flask-SQLAlchemy集成了SQLAlchemy,它简化了连接数据库服务器、管理数据库操作会话等各种工作,让Flask中的数据处理体验变得更轻松。首先使用pipenv安装Flask-SQLAlchemy以及其依赖(主要是SQLAlchem 阅读全文
posted @ 2019-03-25 22:55 夏晓旭 阅读(5845) 评论(0) 推荐(0)
摘要:数据库 数据库是大多数动态web程序的基础设施,只要你想把数据存下来,就离不开数据库。 这里所说的数据库指的是有存储数据的单个或多个文件组成的集合,它是一种容器,可以类比文文件柜。而人们通常使用数据库来表示操作数据库的软件,这类管理数据库的软件被称为数据库管理系统,常见的数据库管理系统(DBMS)有 阅读全文
posted @ 2019-03-25 22:47 夏晓旭 阅读(1844) 评论(0) 推荐(0)
摘要:渲染模板时,访问页面提示TypeError: 'UnboundField' object is not callable 检查代码,发现实例化表单类是,没有加括号:form = NewNoteForm,加了括号后就解决了form = NewNoteForm() 阅读全文
posted @ 2019-03-22 22:23 夏晓旭 阅读(1175) 评论(0) 推荐(0)
摘要:flask用宏渲染表单模板时,表单提交后,提交的内容符合DataRequired()校验, 但是form.validate_on_submit()返回的是False, 原因可能是表单模板中的<form>中没有指明请求的方法'get'或'post' flask_wtf类的validate_on_sub 阅读全文
posted @ 2019-03-21 22:00 夏晓旭 阅读(1988) 评论(0) 推荐(0)
摘要:单个页面多个表单 除了在单个表单上实现多个提交按钮,有时还需要在单个页面上创建多个表单。比如,在程序的主页上同时添加登录和注册表单。当在同一个页面上添加多个表单时,我们需要解决的问题是在视图函数中判断当前被提交的是哪个表单。 创建两个表单,并在模板中分别渲染比较容易,但当提交某个表单是,就会遇到问题 阅读全文
posted @ 2019-03-17 22:56 夏晓旭 阅读(6104) 评论(0) 推荐(1)