《Flask Web开发——基于Python的Web应用开发实践》一字一板上机实践(上)

第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.

此地要求足够一行代码,如下图:

 图片 1

 

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进行有关命令操作,发现运转如常,结果如下:

 图片 2

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

 图片 3

图片 4

 

注:第10章内容初看很简单,不重庆大学,然则假如不过细看懂每1个布局步骤以及相关代表意义,会意识学习后边章节,很难读懂有关代码。本章最要紧的有个别,得读懂7.2配备选项中config.py达成配置的切实可行格局,以及程序是什么样调用那个设置好的安顿。最终,要求注意的正是学会7.4起动脚本中manage.py代码具体内涵,因为写好的程序是或不是平常打开服务,一般都以因而那段代码来促成,说白了那里原理依然要重返第1章有关Flask-Script模块的讲课(PS:即有关使用manage.run()直接开启系统服务)。

 

末尾,附加一份自身要好学习前7章内容上机代码,都以遵照书本上一行代码一行手动敲进去的,出现错误再修改,本有的代码和作者GitHub上流行版代码有多少见仁见智。

切切实实代码链接

 

前言

上学Python也有贰个半月时间了,学到未来倍感照旧初步入门阶段,假设不依靠网上德姆o能源,差不离不能够协调写出有关称心的事物。近来觉得自个儿或然有点退步啊,学的太慢了点。首要感觉依旧要好刚开头学习时有点浮躁,一心求快,看材质时最初都是任何吞枣。

 

刚开首买了一本《Python基础教程
第二版》,大概花了10天看完,伊始摸底了Python语法相关天性以及哪些链接后台数据库。那时,看完后又买了《Python
Web开发执行》和《Flask
Web开发——基于Python的Web应用开发实践》。然后,花了5天时间把《Flask
Web开发——基于Python的Web应用开发实践》看了二次,之所以这么快,是因为观察了第⑨章时,发现代码有点弄不懂,而且从作者GitHub上克隆下来的代码运营还有Bug,所以选取了神速看完了背后几章,大约理解一下实现思路。然后,初阶看《Python
Web开发执行》,发现那本书的渴求好高啊,初学者想看懂它,花的日子尚无两三周还搞不定(PS:主假若内部讲的偏重经验,没有进行项目),于是也选用了4天时间先导浏览了二回。到了此地,笔者初阶选取看网络教程,把廖雪峰先生的Python教程从基础部分一章一章上机实践操作了三次(PS:最后的品类实战没操作),那个也大多花了8天时间。后边又花了5天时间在网上找了几篇高品质关于选用Flask+MySQL完结用户登陆注册成效的Demo。到此,感觉对于Python基础领会的更好了某些。发现学技术,尤其是新技巧,要多加商量,求稳。

 

据此,笔者选用了再也再看1次《Flask
Web开发——基于Python的Web应用开发执行》,并力争把书中每个演示运营出来,假若发现Bug,就消除。在这一趟学习进度中,发现有关Flask的中文学习能源大规模没有英文高,而且有关技能学习书本都是英文版翻译过来的。翻译过来的题材就算,书已经问世了两三年,有个别模块库更新,导致书中代码实际就无法运营,还抬高小编自身立时的分寸错误没跟新。

 

正文先上传第3章到第天问的求学实践记录(PS:第玖-14章见《Flask
Web开发——基于Python的Web应用开发执行》一字一板上机实践(下)
),近日本身也是重新学到了此间。若是有学过Flask的先辈路过,有啥样好的求学财富推荐,不甚多谢。

 

叨叨絮絮有点多,本文首要内容正是记载本人在求学《Flask
Web开发——基于Python的Web应用开发实践》时,上机械运输转相关示例蒙受的坑以及一些心体面会,希望对于其他初学Flask的同窗有点扶助。

 

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

本书封面

图片 5

 

 

 


出于书本上使用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邮箱,实现如下设置操作:

 图片 6

图片 7

 

 

发送邮件测试代码(PS:上边得到QQ邮箱测试登陆临时密码有点坑的是,发送完短信后,可能30秒后浏览器上开启的QQ邮箱界面直接崩溃,然则那没涉及,崩溃后也一如既往能够发送邮件):

 图片 8

 

发送成功后的截图:

图片 9

 

 

 2.至于61页在程序中融合为一发送电子邮件功效

在意此处要整合第⑥章数据库功效,所以前提要明确在运营成功的页面上可以使得地把多少插入后台数据库。其次,要注意的是在templates文件下要团结入手新建一个mail文件夹,并在那个文件夹里新建new_user.txt和new_user.html多个文件文件,这样才能真的落到实处邮件发送成效。(PS:new_user.txt、new_user.html文件中内容,请查看从笔者GitHub上克隆下来的代码)

运作成功结果页面如下(PS:此处落成效益取得邮箱音讯,作者都是直接写在代码中的,未选择环境变量获取):

 图片 10

图片 11

 

注:本章首要教师了Flask-Mail的利用,功效利用简单,重如果事关邮箱发送邮件时登陆必要相关服务器许可的布署难题不怎么麻烦。但是,全体来说,本章的运用,也从一方面来看了Python的魅力,不难的几行代码即可兑现部分相比较复杂的功力。

 

 


 

第5章 数据库

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

 图片 12

 

第1章  程序的中坚构造

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

 图片 13

 

上海体育地方中所示难点小编特意查看了一下有关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上源码已更新):

 图片 14

 

此间错误,在此起彼伏章节中,出现类似flask.ext.**均修改为flask_**即可。

 

注:通过第叁章,让笔者大概掌握了Flask框架的基本使用格局。在这之中关键在于路由和视图函数的兑现以及怎么着运维服务器,难题在于请求钩子概念的精晓,作者把这段概念反复看了好四次,也只好精通讲解的文字表面意思,关于什么利用依然是一只雾水。

 

 


坚守报错提醒,要求在app.config[‘SQLALCHEMY_COMMIT_ON_TEARDOWN’]

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

 图片 15

 

SQLALCHEMY_TRACK_MODIFICATIONS:若是设置成True(暗中认可情形),Flask-SQLAlchemy
将会追踪对象的修改并且发送信号。那必要很是的内部存款和储蓄器,
假使不须求的能够禁止使用它。尽管你不展现的调用它,在最新版的周转条件下,会议及展览示警告。

 

2.书本50页5.8.1创建表,图中呈现的操作符应该是在Mac可能Linux环境下进展的通令操作,如若是在Windows环境下,是达不到效果的,具体如下:

 图片 16

 

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

 图片 17

此间如何要安份守己书本上命令达到效果,能够参照第③章有关Flask-Scrip包的讲课,设置manager变量,然后就足以平素打开shell实行连锁操作。

 

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

 图片 18

图片 19

 

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

 图片 20

此地之所以这么修改代码,是因为设计的数据库剧中人物和用户是一对多的涉及,用户表中包括一个剧中人物id外键。在对用户表进行插队操作时,必须求确认一个用户角色,否则不恐怕插入。

附运维成功页面截图:

 图片 21

 

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):

 图片 22

 

 

6.有关使用MySQL数据库实现相关增加和删除查改操作难点

一经认真看完第陆章内容,转用MySQL数据库完结增删查改操作分外不难,仅仅只供给把定义数据库U大切诺基L地址改一下就足以,别的一些代码均不要求转移。具体修改如下:

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的官方文书档案。

 

 


第4章 Web表单

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

 图片 23

 

Class
wtforms.validators.DataRequired(message=None)
此验证器将会检查和测试田野同志是还是不是输入了数值,实际上是进展了if
田野同志.data操作。并且,如数数据是1个字符串,那么只含有空格的字符串将会被认为是False。
参数:message-当验证败北时回来的谬误消息数:message-当验证失败时重临的荒谬音信。

此处作者GitHub三月履新。具体使用原理能够查看Flask-WTF开发文书档案

 

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

 图片 24

 

注:本章内容根本教学了Flask-WTF的行使,此处强烈建议初学者先看一下Flask-WTF的支出文书档案,再来举行第6章的学习,那样驾驭会尤其深厚一点,学的也会更快一些。

除外,还详细介绍了重定向和用户会话成效:首借使Post/重定向/Get方式,通过重定向实现了页面刷新仍旧能够记住以前请求的数据,使得网页功效尤为人性化和智能化。

最后,正是Flash音信功用的施用,通过此作用整合Flask-BootStrap包,在网页上拓展有关提醒操作大约是无微不至。

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

 

 


第3章 模板

坚守书本上所述,一步一步实行操作,即可获取如下运转结果:

 图片 25

图片 26

图片 27

 

此间要留心一点就是,直接从GitHub上克隆出的代码,直接运维hello.py文件是于事无补的。要求在hello.py文件最末尾添加如下两行代码:

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

 

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

 

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

 


 

第6章 电子邮件

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

第1章 安装

本有的内容安装书上内容一步一步来操作,很简单,基本不会产出难点。

注:本章重要教会初学者,如何设置虚拟环境。使用虚拟环境一段时间后,会发觉学习Python,使用虚拟环境真的是很强大,可防止止Python解释器中包的杂乱无章和版本的冲突,而且还不需求借助管理员权限。

 

 



目录

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: 金鼎文;”>章
大型程序的布局