Web开发——基于Python的Web应用开发执行》,Web开发——基于Python的Web应用开发实践》

目录

style=”font-family: 宋体; font-size: 14pt;”>前言

style=”font-family: 宋体;”>第1 style=”font-family: 宋体;”>章
安装

style=”font-family: 金鼎文;”>第③ style=”font-family: 楷书;”>章
程序的核心结构

style=”font-family: 宋体;”>第3 style=”font-family: 宋体;”>章
模板

style=”font-family: 宋体;”>第4 style=”font-family: 宋体;”>章 style=”font-family: Calibri;”>Web style=”font-family: 宋体;”>表单

style=”font-family: 宋体;”>第5 style=”font-family: 宋体;”>章
数据库

style=”font-family: 大篆;”>第陆 style=”font-family: 黑体;”>章
电子邮件

style=”font-family: 行书;”>第捌 style=”font-family: 金鼎文;”>章
大型程序的结构

目录

style=”font-family: 宋体; font-size: 14pt;”>前言

style=”font-family: 宋体;”>第1 style=”font-family: 宋体;”>章
安装

style=”font-family: 楷书;”>第贰 style=”font-family: 大篆;”>章
程序的基本结构

style=”font-family: 宋体;”>第3 style=”font-family: 宋体;”>章
模板

style=”font-family: 宋体;”>第4 style=”font-family: 宋体;”>章 style=”font-family: Calibri;”>Web style=”font-family: 宋体;”>表单

style=”font-family: 宋体;”>第5 style=”font-family: 宋体;”>章
数据库

style=”font-family: 金鼎文;”>第5 style=”font-family: 大篆;”>章
电子邮件

style=”font-family: 小篆;”>第拾 style=”font-family: 小篆;”>章
大型程序的布局

 

 

 

 



前言

学学Python也有三个半月时间了,学到未来倍感照旧始于入门阶段,倘若不重视网上德姆o财富,大约无法协调写出有关称心的东西。方今觉得温馨或许某个战败啊,学的太慢了点。首要感觉照旧自个儿刚起先读书时有点浮躁,一心求快,看资料时最初都以整套吞枣。

 

刚开端买了一本《Python基础教程
第贰版》,大概花了10天看完,开端询问了Python语法相关天性以及怎么样链接后台数据库。那时,看完后又买了《Python
Web开发执行》和《Flask
Web开发——基于Python的Web应用开发实践》。然后,花了5天时间把《Flask
Web开发——基于Python的Web应用开发实践》看了一次,之所以如此快,是因为阅览了第玖章时,发现代码有点弄不懂,而且从作者GitHub上克隆下来的代码运转还有Bug,所以接纳了飞跃看完了后面几章,大致通晓一下兑现思路。然后,开首看《Python
Web开发执行》,发现那本书的须求好高啊,初学者想看懂它,花的日子从没两三周还搞不定(PS:首借使在那之中讲的注重经验,没有举行项目),于是也接纳了4天时间开端浏览了三遍。到了此地,小编起来选择看网络教程,把廖雪峰先生的Python教程从基础部分一章一章上机实践操作了3回(PS:最终的类型实战没操作),那几个也大半花了8天时间。后边又花了5天时间在网上找了几篇高品质关于使用Flask+MySQL实现用户登陆注册作用的德姆o。到此,感觉对于Python基础驾驭的更好了几许。发现学技术,特别是新技巧,要脚踏实地,求稳。

 

之所以,我选用了重复再看2遍《Flask
Web开发——基于Python的Web应用开发执行》,并争取把书中每一个演示运转出来,假设发现Bug,就解决。在这一趟学习进程中,发现有关Flask的粤语学习能源大规模没有英文高,而且有关技能学习书本都以英文版翻译过来的。翻译过来的难题不怕,书已经出版了两三年,有个别模块库更新,导致书中代码实际就无法运作,还抬高小编本人马上的轻微错误没跟新。

 

本文先上传第③章到第拾章的求学实践记录(PS:第拾-14章见《Flask
Web开发——基于Python的Web应用开发实践》一字一板上机实践(下)
),如今作者也是双重学到了此处。假如有学过Flask的前辈路过,有如何好的读书能源推荐介绍,不甚多谢。

 

叨叨絮絮有点多,本文主要内容正是记载自个儿在上学《Flask
Web开发——基于Python的Web应用开发实践》时,上机运转相关示例碰着的坑以及有个别心体面会,希望对于其余初学Flask的同学有点支持。

 

附:《Flask
Web开发——基于Python的Web应用开发实践》小编博客小编互连网教程版作者本书GitHub代码链接

本书封面

图片 1

 

 

 


前言

上学Python也有两个半月时间了,学到今后感觉到还是始于入门阶段,假设不依靠网上德姆o能源,大概不能够和谐写出有关称心的事物。近日感觉自个儿大概有点失利啊,学的太慢了点。重要感觉照旧要好刚开首学习时有点浮躁,一心求快,看材质时最初都是总体吞枣。

 

刚伊始买了一本《Python基础教程
第贰版》,大约花了10天看完,开始询问了Python语法相关个性以及如何链接后台数据库。那时,看完后又买了《Python
Web开发执行》和《Flask
Web开发——基于Python的Web应用开发执行》。然后,花了5天时间把《Flask
Web开发——基于Python的Web应用开发实践》看了3次,之所以那样快,是因为观望了第⑧章时,发现代码有点弄不懂,而且从小编GitHub上克隆下来的代码运行还有Bug,所以选取了高速看完了后头几章,大约了解一下跌实思路。然后,开首看《Python
Web开发执行》,发现那本书的须求好高啊,初学者想看懂它,花的年月没有两三周还搞不定(PS:首假设内部讲的依赖经验,没有实施项目),于是也选取了4天时间初叶浏览了贰回。到了此处,小编起来选取看网络教程,把廖雪峰先生的Python教程从基础部分一章一章上机实践操作了3次(PS:最终的类型实战没操作),那些也大半花了8天时间。前边又花了5天时间在网上找了几篇高品质关于使用Flask+MySQL实现用户登陆注册作用的德姆o。到此,感觉对于Python基础了解的更好了几许。发现学技术,特别是新技巧,要脚踏实地,求稳。

 

由此,作者选取了重新再看三回《Flask
Web开发——基于Python的Web应用开发执行》,并争取把书中每3个演示运转出来,借使发现Bug,就化解。在这一趟学习进度中,发现有关Flask的华语学习财富大规模没有英文高,而且有关技能学习书本都以英文版翻译过来的。翻译过来的标题正是,书已经问世了两三年,某个模块库更新,导致书中代码实际就不可能运维,还抬高小编本身立刻的一线错误没跟新。

 

正文先上传第壹章到第⑧章的学习实践记录(PS:第⑨-14章见《Flask
Web开发——基于Python的Web应用开发执行》一字一板上机实践(下)
),近期本身也是重复学到了此处。要是有学过Flask的先辈路过,有怎样好的学习财富推荐,不甚多谢。

 

叨叨絮絮有点多,本文首要内容正是记载本人在读书《Flask
Web开发——基于Python的Web应用开发执行》时,上机运维相关示例碰到的坑以及有些心体面会,希望对于任何初学Flask的同校有点扶助。

 

附:《Flask
Web开发——基于Python的Web应用开发执行》笔者博客小编互连网教程版我本书GitHub代码链接

本书封面

图片 2

 

 

 


第1章 安装

本有的剧情安装书上内容一步一步来操作,很简单,基本不会油不过生难点。

注:本章主要教会初学者,如何设置虚拟环境。使用虚拟环境一段时间后,会发觉学习Python,使用虚拟环境真的是很强劲,能够幸免Python解释器中包的混杂和版本的冲突,而且还不要求依靠管理员权限。

 

 


第1章 安装

本有的情节安装书上内容一步一步来操作,很简单,基本不会油不过生难题。

注:本章首要教会初学者,如何设置虚拟环境。使用虚拟环境一段时间后,会发觉学习Python,使用虚拟环境真的是很强大,能够免止Python解释器中包的繁杂和版本的龃龉,而且还不须求依靠管理员权限。

 

 


第叁章  程序的着力构造

1.书本15页上边第贰段代码:

 图片 3

 

上海体育地方中所示难点作者特意查看了弹指间关于load_user()方法的调用及其职能,官方文书档案写明如下:

您供给提供1个user_loader 回调。那几个回调用于从会话中储存的用户 ID
重新加载用户对象。它应有接受贰个用户的 unicode
ID,并再次回到相应的用户对象。 例如: 
@login_manager.user_loader 
def
load_user(userid): 
    return
User.get(userid) 
假诺 ID
无效,它应当回到 None ( 而不是抛出十二分 )。(在这种处境下,ID 会
被手动从会话中移除且处理会继续。) 

 

2.书本16页左上角示例错误更改(PS:此处难题应有是包版本升级导致,可是小编关于该项目github上源码已履新):

 图片 4

 

那边错误,在继承章节中,出现就像flask.ext.**均修改为flask_**即可。

 

注:通过第一章,让自家大约询问了Flask框架的主题使用格局。当中关键在于路由和视图函数的落到实处以及哪些运维服务器,难题在于请求钩子概念的敞亮,笔者把那段概念反复看了有些遍,也只可以通晓讲解的文字表面意思,关于怎么样使用如故是四头雾水。

 

 


第一章  程序的骨干结构

1.书本15页上边第②段代码:

 图片 5

 

上海体育场所中所示难题笔者专门查看了一下有关load_user()方法的调用及其功效,官方文书档案写明如下:

你须求提供三个user_loader 回调。那么些回调用于从会话中存款和储蓄的用户 ID
重新加载用户对象。它应有接受一个用户的 unicode
ID,并重临相应的用户对象。 例如: 
@login_manager.user_loader 
def
load_user(userid): 
    return
User.get(userid) 
设若 ID
无效,它应当回到 None ( 而不是抛出相当 )。(在这种景况下,ID 会
被手动从会话中移除且处理会继续。) 

 

2.书本16页左上角示例错误更改(PS:此处难点应有是包版本升级导致,然而笔者关于该项目github上源码已履新):

 图片 6

 

此地错误,在持续章节中,出现就像flask.ext.**均修改为flask_**即可。

 

注:通过第③章,让本人大致驾驭了Flask框架的骨干采取方式。个中关键在于路由和视图函数的完结以及怎么样运维服务器,难点在于请求钩子概念的通晓,小编把那段概念反复看了好两遍,也只可以精通讲解的文字表面意思,关于什么使用照旧是2头雾水。

 

 


第3章 模板

奉公守法书本上所述,一步一步实行操作,即可得到如下运转结果:

 图片 7

图片 8

图片 9

 

此间要专注一点就是,直接从GitHub上克隆出的代码,直接运转hello.py文件是对事情没有什么帮助的。必要在hello.py文件最末尾添加如下两行代码:

if __name__ == '__main__':
    app.run(port = 8000,debug = True)

 

上述代码意思是,打开Flask自带服务器,开启端口是七千,且处于调节和测试格局。

 

注:第叁章内容没有困难,认真看一下书上解释,相当的慢就能弄懂相关代码意图。本章重点介绍了Jinja2模板引擎的选拔(PS:此处建议初学者到网上看一下Jinja2的付出文书档案,加深理解),以及Flask-Bootstrap和Flask-Moment模块的使用方法,感觉有所机能都以曾经写好的,只管调用即可,很便利。

 


第3章 模板

依照书本上所述,一步一步进行操作,即可获得如下运维结果:

 图片 10

图片 11

图片 12

 

此地要小心一点正是,直接从GitHub上克隆出的代码,直接运营hello.py文件是无济于事的。须要在hello.py文件最前面添加如下两行代码:

if __name__ == '__main__':
    app.run(port = 8000,debug = True)

 

上述代码意思是,打开Flask自带服务器,开启端口是八千,且处于调节和测试形式。

 

注:第壹章内容从未困难,认真看一下书上解释,极快就能弄懂有关代码意图。本章重点介绍了Jinja2模板引擎的使用(PS:此处提出初学者到网上看一下Jinja2的成本文书档案,加深通晓),以及Flask-Bootstrap和Flask-Moment模块的使用方式,感觉有所机能都以早就写好的,只管调用即可,很便宜。

 


第4章 Web表单

1.书本34页示例4-2代码更新(PS:引入包也要改成from
flask_wtf import Form,后续章节一样):

 图片 13

 

Class
wtforms.validators.DataRequired(message=None)
此验证器将会检查和测试田野先生是还是不是输入了数值,实际上是开始展览了if
田野.data操作。并且,如数数据是一个字符串,那么只包括空格的字符串将会被认为是False。
参数:message-当验证失利时回来的谬误消息数:message-当验证战败时回来的荒谬新闻。

此间作者GitHub上已更新。具体行使原理能够查看Flask-WTF开发文书档案

 

2.探访学习本章内容其实运转效果图:

 图片 14

 

注:本章内容重点教授了Flask-WTF的选拔,此处强烈提议初学者先看一下Flask-WTF的付出文书档案,再来举办第5章的读书,那样敞亮会越来越深入一点,学的也会更快一些。

除却,还详细介绍了重定向和用户会话功用:首若是Post/重定向/Get形式,通过重定向达成了页面刷新依旧能够记住此前请求的数额,使得网页效率进一步人性化和智能化。

最终,正是Flash新闻功效的运用,通过此作用结合Flask-BootStrap包,在网页上展开连锁提醒操作几乎是周到。

本章节从作者GitHub上下载的代码均是修过正的,然而书本是二〇一五年问世,相关错误以及代码更新部分需注意即可。

 

 


第4章 Web表单

1.书本34页示例4-2代码更新(PS:引入包也要改成from
flask_wtf import Form,后续章节一样):

 图片 15

 

Class
wtforms.validators.DataRequired(message=None)
此验证器将会检查和测试田野(field)是不是输入了数值,实际上是举行了if
田野先生.data操作。并且,如数数据是贰个字符串,那么只含有空格的字符串将会被认为是False。
参数:message-当验证失利时再次回到的错误新闻数:message-当验证退步时回来的失实音信。

那里我GitHub上已更新。具体应用原理能够查看Flask-WTF开发文书档案

 

2.看望学习本章内容实在运作效果图:

 图片 16

 

注:本章内容重点助教了Flask-WTF的利用,此处强烈提议初学者先看一下Flask-WTF的花费文书档案,再来举行第4章的就学,那样敞亮会越加浓厚一点,学的也会更快一些。

除去,还详细介绍了重定向和用户会话作用:首要是Post/重定向/Get形式,通过重定向完结了页面刷新如故能够记住从前请求的数据,使得网页作用尤为人性化和智能化。

最后,正是Flash音讯作用的施用,通过此功用整合Flask-BootStrap包,在网页上进行连锁提示操作简直是完美。

本章节从笔者GitHub上下载的代码均是修过正的,但是书本是2015年问世,相关错误以及代码更新部分需注意即可。

 

 


第5章 数据库

1.书本47页示例5-1代码部分有bug,遵照书本后续讲解进行操作会报以下错误:

 图片 17

 

第5章 数据库

1.书本47页示例5-1代码部分有bug,依照书本后续讲解进行操作会报以下错误:

 图片 18

 

依照报错提醒,供给在app.config[‘SQLALCHEMY_COMMIT_ON_TEARDOWN’]

True该行代码下添加如下一行代码:app.config[‘SQLALCHEMY_TRACK_MODIFICATIONS’]
= False

 图片 19

 

SQLALCHEMY_TRACK_MODIFICATIONS:假诺设置成True(暗中同意情况),Flask-SQLAlchemy
将会追踪对象的改动并且发送信号。那供给额外的内部存款和储蓄器,
借使不供给的能够禁止使用它。假若您不显得的调用它,在最新版的运作条件下,会议及展览示警告。

 

2.书本50页5.8.1创建表,图中显得的操作符应该是在Mac只怕Linux环境下进展的一声令下操作,假如是在Windows环境下,是达不到功效的,具体如下:

 图片 20

 

具体操作方法如下(WIndows版本):

 图片 21

此处怎么着要按部就班书本上命令达到效果,能够参考第一章有关Flask-Scrip包的讲课,设置manager变量,然后就足以平素打开shell进行有关操作。

 

3.书本50页5.8节数据库操作部分示例运营结果

 图片 22

图片 23

 

 4.书籍55页示例5-5有的关于操作数据库部分代码有标题

 图片 24

此地之所以如此修改代码,是因为设计的数据库剧中人物和用户是一对多的关联,用户表中包罗1个剧中人物id外键。在对用户表举办插队操作时,须要求肯定贰个用户角色,不然不只怕插入。

附运营成功页面截图:

 图片 25

 

5.书本57页有关Flask-MIgrate相关配置命令怎么着科学贯彻难题

如果纯粹安装书本代码来进展有关命令操作,会发现输入python
hello.py db
init命令根本未曾出口任何提示音信,即不能够不负众望创制迁移仓库。假若从笔者GitHub上克隆下来的代码,直接开始展览此命令操作,也是一直不别的新闻提示。此处供给在hello.py文件最末尾,加上如下两行代码(PS:小编最新修改代码,未定义manager变量,此处需求查阅第③章有关Flask-Script包讲解,本身定义好manager变量):

if __name__ == '__main__':

    manager.run()

 

再去控制台输入相关命令,即可落成相关操作,操作成功结果如下(PS:此处推荐一篇博客小说https://www.cnblogs.com/caicairui/p/7821586.html):

 图片 26

 

 

6.有关使用MySQL数据库完结相关增加和删除查改操作难题

只要认真看完第4章内容,转用MySQL数据库实现增加和删除查改操作万分简单,仅仅只需求把定义数据库UPRADOL地址改一下就足以,别的一些代码均不需求转移。具体修改如下:

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:root@localhost/test_flask'
#app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir,'data.sqlite')

 

上述代码意思,使用用户名和密码均为root的mysql数据库账号,进入曾经创办好的test_flask数据库,举办相关表的创立以及数额的增加和删除查改操作。自处能够仔细看一下图书46页表5-1。

 

注:通过本章的学习,让自家为主明白了怎么样利用Flask-SQLAlchemy相关职能,以及落到实处对关系型数据库SQLite、MySQL的增加和删除查改操作,最终最要害的正是学会了运用Flask-Migrate落到实处数据库迁移。为了能够较好的通晓和控制第6章内容,建议初学者认真看一下Flask-SQLAlchemy和Flask-Migrate的法定文书档案。

 

 


安份守己报错提示,供给在app.config[‘SQLALCHEMY_COMMIT_ON_TEARDOWN’]

True该行代码下添加如下一行代码:app.config[‘SQLALCHEMY_TRACK_MODIFICATIONS’]
= False

 图片 27

 

SQLALCHEMY_TRACK_MODIFICATIONS:假使设置成True(暗中认可情状),Flask-SQLAlchemy
将会追踪对象的改动并且发送信号。那必要万分的内部存款和储蓄器,
如若不供给的能够禁止使用它。如果您不突显的调用它,在新式版的周转条件下,会议及展览示警告。

 

2.书本50页5.8.1创设表,图中展现的操作符应该是在Mac或许Linux环境下进展的授命操作,若是是在Windows环境下,是达不到效果的,具体如下:

 图片 28

 

具体操作方法如下(WIndows版本):

 图片 29

那里怎样要依据书本上命令达到效果,能够参照第贰章有关Flask-Scrip包的上课,设置manager变量,然后就足以一向打开shell进行相关操作。

 

3.书本50页5.8节数据库操作部分示例运转结果

 图片 30

图片 31

 

 4.书籍55页示例5-5片段关于操作数据库部分代码非常

 图片 32

此间之所以这么修改代码,是因为设计的数据库角色和用户是一对多的涉及,用户表中包蕴三个剧中人物id外键。在对用户表实行插队操作时,必须求肯定2个用户剧中人物,不然不可能插入。

附运维成功页面截图:

 图片 33

 

5.书本57页有关Flask-MIgrate相关配置命令怎样正确贯彻难点

倘诺纯粹安装书本代码来拓展相关命令操作,会发觉输入python
hello.py db
init命令根本没有出口任何提醒信息,即无法打响创造迁移仓库。假设从作者GitHub上克隆下来的代码,直接进行此命令操作,也是绝非任何音信提示。此处要求在hello.py文件最终边,加上如下两行代码(PS:小编最新修改代码,未定义manager变量,此处须求查阅第一章有关Flask-Script包讲解,自个儿定义好manager变量):

if __name__ == '__main__':

    manager.run()

 

再去控制台输入相关命令,即可完毕相关操作,操作成功结果如下(PS:此处推荐一篇博客作品https://www.cnblogs.com/caicairui/p/7821586.html):

 图片 34

 

 

6.有关使用MySQL数据库达成相关增加和删除查改操作难题

比方认真看完第肆章内容,转用MySQL数据库完成增加和删除查改操作至极简单,仅仅只要求把定义数据库UPAJEROL地址改一下就能够,别的一些代码均不须求变更。具体修改如下:

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:root@localhost/test_flask'
#app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir,'data.sqlite')

 

上述代码意思,使用用户名和密码均为root的mysql数据库账号,进入曾经创设好的test_flask数据库,进行相关表的创始以及数据的增删查改操作。自处能够仔细看一下书籍46页表5-1。

 

注:通过本章的就学,让自己基本掌握了怎么接纳Flask-SQLAlchemy有关职能,以及贯彻对关系型数据库SQLite、MySQL的增加和删除查改操作,最终最重庆大学的就是学会了选用Flask-Migrate贯彻数据库迁移。为了能够较好的接头和精晓第六章内容,建议初学者认真看一下Flask-SQLAlchemy和Flask-Migrate的法定文书档案。

 

 


第6章 电子邮件

1.书本60页发送邮件示例

第6章 电子邮件

1.书本60页发送邮件示例

是因为书本上使用googlemail邮箱,一般国内同学都不会利用这几个邮箱。抢先五分三都会采纳QQ邮箱吧。此处只须求把设置写成app.config[‘MAIL_SERVER’]

‘smtp.qq.com’,即把电子邮件服务器主机名中间的googlemail换到qq就行啊。

做到这么些,假使单纯使用本身的QQ邮箱号和QQ密码登陆发送邮件的话,会报以下错误:

smtplib.SMTPSenderRefused:
(503, ‘Error: need EHLO and AUTH first !’, u’****’…)

消除办法(PS:此处关于QQ邮箱和登陆密码笔者是一向写在代码里的,没有用环境变量获取):
进去本人的QQ邮箱,实现如下设置操作:

 图片 35

图片 36

 

 

发送邮件测试代码(PS:上面得到QQ邮箱测试登陆暂时密码有点坑的是,发送完短信后,也许30秒后浏览器上打开的QQ邮箱界面直接崩溃,不过那没提到,崩溃后也依旧能够发送邮件):

 图片 37

 

出殡成功后的截图:

图片 38

 

 

 2.关于61页在先后中合拢发送电子邮件作用

小心此处要整合第⑤章数据库成效,所在此之前提要规定在运营成功的页面上可见有效地把多少插入后台数据库。其次,要小心的是在templates文件下要本人出手新建多个mail文件夹,并在那一个文件夹里新建new_user.txt和new_user.html八个公文文件,那样才能确实兑现邮件发送作用。(PS:new_user.txt、new_user.html文件中内容,请查看从小编GitHub上克隆下来的代码)

运维成功结果页面如下(PS:此处实现效益博得邮箱新闻,小编都以直接写在代码中的,未使用环境变量获取):

 图片 39

图片 40

 

注:本章重要教师了Flask-Mail的施用,成效应用不难,主若是事关邮箱发送邮件时登陆须要相关服务器许可的布局难题不怎么辛苦。不过,全体来说,本章的使用,也从单平素看了Python的魔力,简单的几行代码即可完结部分比较复杂的功能。

 

 


是因为书本上使用googlemail邮箱,一般国内同学都不会利用这一个邮箱。半数以上都会采取QQ邮箱吧。此处只必要把设置写成app.config[‘MAIL_SERVER’]

‘smtp.qq.com’,即把电子邮件服务器主机名中间的googlemail换到qq就行呐。

做到那个,假设一味使用本人的QQ邮箱号和QQ密码登陆发送邮件的话,会报以下错误:

smtplib.SMTPSenderRefused:
(503, ‘Error: need EHLO and AUTH first !’, u’****’…)

化解办法(PS:此处关于QQ邮箱和登陆密码作者是直接写在代码里的,没有用环境变量获取):
跻身本身的QQ邮箱,实现如下设置操作:

 图片 41

图片 42

 

 

发送邮件测试代码(PS:上边得到QQ邮箱测试登陆暂且密码有点坑的是,发送完短信后,大概30秒后浏览器上打开的QQ邮箱界面直接崩溃,然则那没提到,崩溃后也还能够发送邮件):

 图片 43

 

发送成功后的截图:

图片 44

 

 

 2.有关61页在程序中融为一炉发送电子邮件成效

专注此处要整合第陆章数据库效用,所以前提要分明在运作成功的页面上能够行得通地把数量插入后台数据库。其次,要留心的是在templates文件下要团结动手新建三个mail文件夹,并在那些文件夹里新建new_user.txt和new_user.html两个文件文件,那样才能确实达成邮件发送功用。(PS:new_user.txt、new_user.html文件中情节,请查看从笔者GitHub上克隆下来的代码)

运作成功结果页面如下(PS:此处实现效益获得邮箱消息,我都以间接写在代码中的,未选用环境变量获取):

 图片 45

图片 46

 

注:本章重要教授了Flask-Mail的使用,功效使用简单,首借使关系邮箱发送邮件时登陆要求有关服务器许可的配备难点不怎么麻烦。但是,全部来说,本章的选取,也从单一直看了Python的吸引力,简单的几行代码即可兑现部分相比复杂的功效。

 

 


第7章 大型程序的结构

1.书本66页示例7-2代码有bug

那里如若完全依据书本上代码,到了再而三上机运行时会报以下错误:

E:\WorkPlace\Git_python\liu_demo\venv\lib\site-packages\flask_sqlalchemy\__init__.py:794:
FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant
overhead and will be disabled by default in the future.  Set it to True
or False to suppress this warning.

此处供给加上一行代码,如下图:

 图片 47

 

Flask-SQLAlchemy配置键相关职能定义:

SQLALCHEMY_DATABASE_URI

用于连接数据的数据库。例如:

  • sqlite:////tmp/test.db
  • mysql://username:password@server/db

SQLALCHEMY_BINDS

一个映射绑定 (bind) 键到 SQLAlchemy 连接 URIs 的字典。 更多的信息请参阅 绑定多个数据库

SQLALCHEMY_ECHO

如果设置成 True,SQLAlchemy 将会记录所有 发到标准输出(stderr)的语句,这对调试很有帮助。

SQLALCHEMY_RECORD_QUERIES

可以用于显式地禁用或者启用查询记录。查询记录 在调试或者测试模式下自动启用。更多信息请参阅 get_debug_queries()

SQLALCHEMY_NATIVE_UNICODE

可以用于显式地禁用支持原生的 unicode。这是 某些数据库适配器必须的(像在 Ubuntu 某些版本上的 PostgreSQL),当使用不合适的指定无编码的数据库 默认值时。

SQLALCHEMY_POOL_SIZE

数据库连接池的大小。默认是数据库引擎的默认值 (通常是 5)。

SQLALCHEMY_POOL_TIMEOUT

指定数据库连接池的超时时间。默认是 10。

SQLALCHEMY_POOL_RECYCLE

自动回收连接的秒数。这对 MySQL 是必须的,默认 情况下 MySQL 会自动移除闲置 8 小时或者以上的连接。 需要注意地是如果使用 MySQL 的话, Flask-SQLAlchemy 会自动地设置这个值为 2 小时。

SQLALCHEMY_MAX_OVERFLOW

控制在连接池达到最大值后可以创建的连接数。当这些额外的 连接回收到连接池后将会被断开和抛弃。

SQLALCHEMY_TRACK_MODIFICATIONS

如果设置成 True (默认情况),Flask-SQLAlchemy 将会追踪对象的修改并且发送信号。这需要额外的内存, 如果不必要的可以禁用它。

 

添加方面一行代码后,再一次去CMD进行有关命令操作,发现运维不荒谬化,结果如下:

 图片 48

2.书本74页创制数据库示例运维结果

 图片 49

图片 50

 

注:第⑩章内容初看很简单,不首要,但是如果不细心看懂每3个安插步骤以及有关代表意义,会发觉学习后边章节,很难读懂相关代码。本章最重庆大学的局地,得读懂7.2布署选项中config.py完结配置的切实可行方法,以及程序是怎么样调用那个设置好的配备。最终,需求小心的就是学会7.4运行脚本中manage.py代码具体内涵,因为写好的次序是还是不是符合规律打开服务,一般都以经过那段代码来兑现,说白了那里原理仍旧要回去第贰章有关Flask-Script模块的讲授(PS:即有关使用manage.run()直接开启系统服务)。

 

说到底,附加一份自身本身攻读前7章内容上机代码,都以根据书本上一行代码一行手动敲进去的,出现谬误再修改,本有的代码和作者GitHub上最新版代码有多少不比。

具体代码链接

 

第7章 特大型程序的布局

1.书本66页示例7-2代码有bug

那边假设完全依据书本上代码,到了后续上机械运输维时会报以下错误:

E:\WorkPlace\Git_python\liu_demo\venv\lib\site-packages\flask_sqlalchemy\__init__.py:794:
FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant
overhead and will be disabled by default in the future.  Set it to True
or False to suppress this warning.

那里须求加上一行代码,如下图:

 图片 51

 

Flask-SQLAlchemy配置键相关成效定义:

SQLALCHEMY_DATABASE_URI

用于连接数据的数据库。例如:

  • sqlite:////tmp/test.db
  • mysql://username:password@server/db

SQLALCHEMY_BINDS

一个映射绑定 (bind) 键到 SQLAlchemy 连接 URIs 的字典。 更多的信息请参阅 绑定多个数据库

SQLALCHEMY_ECHO

如果设置成 True,SQLAlchemy 将会记录所有 发到标准输出(stderr)的语句,这对调试很有帮助。

SQLALCHEMY_RECORD_QUERIES

可以用于显式地禁用或者启用查询记录。查询记录 在调试或者测试模式下自动启用。更多信息请参阅 get_debug_queries()

SQLALCHEMY_NATIVE_UNICODE

可以用于显式地禁用支持原生的 unicode。这是 某些数据库适配器必须的(像在 Ubuntu 某些版本上的 PostgreSQL),当使用不合适的指定无编码的数据库 默认值时。

SQLALCHEMY_POOL_SIZE

数据库连接池的大小。默认是数据库引擎的默认值 (通常是 5)。

SQLALCHEMY_POOL_TIMEOUT

指定数据库连接池的超时时间。默认是 10。

SQLALCHEMY_POOL_RECYCLE

自动回收连接的秒数。这对 MySQL 是必须的,默认 情况下 MySQL 会自动移除闲置 8 小时或者以上的连接。 需要注意地是如果使用 MySQL 的话, Flask-SQLAlchemy 会自动地设置这个值为 2 小时。

SQLALCHEMY_MAX_OVERFLOW

控制在连接池达到最大值后可以创建的连接数。当这些额外的 连接回收到连接池后将会被断开和抛弃。

SQLALCHEMY_TRACK_MODIFICATIONS

如果设置成 True (默认情况),Flask-SQLAlchemy 将会追踪对象的修改并且发送信号。这需要额外的内存, 如果不必要的可以禁用它。

 

增进方面一行代码后,再度去CMD进行有关命令操作,发现运转不奇怪化,结果如下:

 图片 52

2.书本74页创设数据库示例运营结果

 图片 53

图片 54

 

注:第⑩章内容初看很简短,不主要,可是只要不细致看懂每一个配置步骤以及有关代表意义,会发现学习后边章节,很难读懂相关代码。本章最重视的一些,得读懂7.2安顿选项中config.py达成配置的现实性方法,以及程序是哪些调用这一个设置好的安插。最终,必要小心的就是学会7.4起步脚本中manage.py代码具体内涵,因为写好的先后是或不是日常打开服务,一般都以经过那段代码来促成,说白了那里原理依旧要再次回到第一章有关Flask-Script模块的执教(PS:即有关使用manage.run()间接开启系统服务)。

 

终极,附加一份自己要好上学前7章内容上机代码,都以依照书本上一行代码一行手动敲进去的,出现错误再修改,本有的代码和笔者GitHub上流行版代码有些许不一。

具体代码链接

 

相关文章