前言 style="font-family: 行书;">第8 style="font-family: 黑体;">章 用户认证 style="font-family: 行书;">第9 style="font-family: 仿宋;">章 用户角色 style="font-family: 行草;">第10 style="font-family: 陶文;">章 用户资料 style="font-family: 行书;">..." />

sqlite《Flask Web开发——基于Python的Web应用开发执行》一字一句上机实践(下)

目录

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

style=”font-family: 行书;”>第8 style=”font-family: 黑体;”>章
用户认证

style=”font-family: 行书;”>第9 style=”font-family: 仿宋;”>章
用户角色

style=”font-family: 行草;”>第10 style=”font-family: 陶文;”>章
用户资料

style=”font-family: 行书;”>第11 style=”font-family: 草书;”>章
博客作品

style=”font-family: 宋体;”>第12 style=”font-family: 宋体;”>章
关注者

style=”font-family: 石籀文;”>第13 style=”font-family: 大篆;”>章
用户评价

style=”font-family: 钟鼓文;”>第14 style=”font-family: 石籀文;”>章
应用编程接口

 

 


前言

第1章-第7章学习实践记录请参见:《Flask
Web开发——基于Python的Web应用开发执行》一字一句上机实践(上)

 

正文记录自己攻读《Flask
Web开发——基于Python的Web应用开发执行》的第8章-第14章内容。相比较于刚起初读书第1-7章内容的话,本有的内容实战性更强,而且在书本上境遇的题目也针锋绝对较少,假设认真弄懂前7章内容的话,本有的情节相当于是对前7章内容的现实实施,学习也很轻松。

 

首先表明一下本有的品种示范实现了什么样效用?

  • 用户角色:普通用户、管理员
  • 现实职能:登陆、注册、发表著作、编辑成文、用户间关心、用户评价、修改个人消息、管理用户评价、马克(Mark)Down呈现著作格式。

下图中所示为一个大班角色登陆系统各部分功效图片动态图:

 sqlite 1

自我要好上机演练代码:(PS:和作者GitHub上代码有多少有别于)

 

 


第8章 用户认证

1.书本79页密码散列效能shell测试有bug

只要学完第7章,并遵照71页manage.py中写入启动脚本代码,在决定台输入python
manage.py shell会报以下错误:TypeError: <flask_script.commands.Shell
object at 0x0000000004E29668>: ‘dict’ object is not callable

sqlite 2

 

解决办法如下图:

 sqlite 3

 

随之,假诺如故安装书本上命令指示输入指令,会报以下错误:Traceback
(most recent call last):File “<console>”, line 1, in
<module>

解决办法见下图:

 sqlite 4

 

2.书本87页用shell插入新用户数量有bug

本问题在于数据库设计带有外键,直接遵照书中插入代码,未插入用户角色外键,是心有余而力不足插入数据的。

解决办法:删除User表和Role表之间的多对一关系

 sqlite 5

 

然后,删除项目中具有**.sqlite文件和migrations文件夹,具体如下:

 sqlite 6

 

下一场依据下图所示三步,重新创制数据库(PS:此处方法见第5章5.11节):

 sqlite 7

 

这多少个处理完毕后,依据书上插入代码,如故会报找不到User和db错误,解决办法如下:

 sqlite 8

 

姣好以上数量插入任务后,在CMD控制台输入python
manage.py
runserver开启服务,浏览器中输入http://127.0.0.1:5000/auth/login,然后用插入的邮箱号和密码进行登陆,会得到如下结果:

 sqlite 9

 

 sqlite 10

 

 

3.书本89页实际运作结果(PS:经验证,数据可以挂号成功)

 

 sqlite 11

sqlite 12

 

4.书本92页执行一个新的数据库迁移

在CMD窗口中,依次输入python
manage.py db migrate -m “the second migration”、python manage.py db
upgrade命令,具体实践以及得到结果如下:

 sqlite 13

sqlite 14

 

5.书本94页示例8-22代码因为Flask-Login版本问题出现如下图所示bug

 sqlite 15

 

解决办法见下图:

 sqlite 16

 

让自家纳闷的是,我写笔记时看的是实体书,上边代码有问题,上边截图的是电子书,上边却是正确的>~<,具体如下:

 sqlite 17

 

题材解决方案网址(https://segmentfault.com/q/1010000004041497

测试is_authenticated方法如下:

 sqlite 18

 

外加书本95页页面运行结果:

 sqlite 19

sqlite 20

 

 

出现上图的案由:

花了一个多钟头找错,结果发现是团结照着书籍83页敲示例8-8代码时少了return语句,直接写User.query.get(int(user_id)),具体如下:

 sqlite 21

 

釜底抽薪来源(https://github.com/maxcountryman/flask-login/issues/302):

 sqlite 22

 

运转成功界面如下:

 sqlite 23

 

上边是自家要好修改数据库数据中邮箱验证属性为True时来得结果(PS:重要在于邮箱验证时需要申请临时密码,所以就没填写具体邮箱数据,间接手动改写后台数据库中多少):

 sqlite 24

 

注:第8章重点讲师了什么行使Flask框架实现用户登陆、注册效能,以及使用邮箱举办用户注册确认以及密码修改确认等。感觉第8章内容就是对书籍前7章内容的一回综合演习,所有应用的技术点都足以在前7章中找到。所以,个人感觉只要踏踏实实把第8章所有代码以及落实思路弄懂,才总算刚刚入门Flask框架。

 

 


第9章 用户角色

1.书本99页使用shell会话把角色写入数据库问题

是因为在第8章实现过程中,我把Role表和User表之间的外键关系给删除了,倘使在这章不另行復苏两表之间的关系就无法落实用户角色的功力。所以,在这种景色下,我又得要把数据库重新初阶化、迁移和开创。之所以如此做,而不是一向开展搬迁和创办,是因为自己在直接举行搬迁和创建的经过中,报错:default属性在框架中早就存在,不能创设新的Role表,这多少个似是而非没有缓解,由于初学,无奈,直接删除migrations文件夹和转移的data-dev.sqlite数据库文件,重新开展先导化、迁移和创设,发现一切OK。具体如下:

 sqlite 25

 

好了,既然Role表和User表之间有了一对多而存在的外键关系,那注册效率插入用户数据时,必须得要肯定用户角色,否则不可能插入。

 sqlite 26

 

恰巧开展了注册测试,竟然毫无确定用户角色,也足以插入成功。这样的痛感违背了自己学习数据库的理论知识啊,在此以前第5章,举办插队数据时,行不通,现在好了。揣测是事先学习时,代码有点bug。

 

注:本章相当于重点在讲数据库的文化,和本书主旨Flask框架的知识点联系不大,其中核情绪想就是概念权限来分配角色等级。一个用户有的只有一种权限,有的可以有多种权力。权限的分配很利索,这样处理操作大大简化了数据库的计划难度,也增强了数码的条理性。

 

 


第10章 用户资料

1.书本105页、107、109页和112页操作运行结果

此间依照书本上的代码讲解,举行编辑代码操作,其中境遇的题材在前头均已遭遇过,所以到了那边基本没啥难点。依照书本讲解,运行结果具体如下:

用户简介页面

 sqlite 27

 

普通用户修改个人信息界面

 sqlite 28

 

sqlite 29

管理员修改个人信息界面

 sqlite 30

 

sqlite 31

 

来得用户头像的材料页面

 sqlite 32

 

 

 

注:本章紧要实现博客系统普通用户和协会者角色的个人音讯编辑功能实现,此处实现没有什么样技术亮点和难题,只要认真完成书本前述部分,这有的效用完全没有阻碍。

 

 


第11章 博客作品

1.有关书籍119页演示11-8代码

本有的代码在作者GitHub上并未以身作则代码,即只要要兑现导入虚拟数据测试功用,只好协调一个代码一个代码敲。然则,这一个也太多了点,一个字母出错就要改错>~<。从作者GitHub上直接克隆下来的代码,即便并未以身作则代码,不过相应是作者更新代码后,在这里换了另一种实现格局,因为在类型文件中现身了一个新的fake.py文件,该公文中代码和演示11-8代码基本接近。

 

2.图书117页、123页、125页和130页操作运行结果

 sqlite 33

sqlite 34

 

 sqlite 35

sqlite 36

 

注:本章是对博客系统功效的恢宏,首要实现用户编辑发送博客著作,其中还能利用马克(Mark)Down来兑现对著作的编撰。功用具体实现参照书本的代码讲解即可,基本不会遇上咋样较难的题目。

 

 


第12章 关注者

1.书本137页和142页实际运行结果

 sqlite 37

sqlite 38

 

 sqlite 39

 

 2.操作完第12章代码后,假设采用用户退出,可能会冒出以下bug:AttributeError:
‘AnonymousUser’ object has no attribute ‘followed_posts’

 sqlite 40

 

解决办法,在models.py文件中找到AnonymousUser类,在那一个类中添加一个办法,具体代码如下:

@property
def followed_posts(self):
    return Post.query.join(Follow, Follow.followed_id == Post.author_id) \
        .filter(Follow.follower_id == None) 

 sqlite 41

 

注:本章具体落实部分的难点是关爱用户记录的数额库表的统筹,即多对对关系会生成一张中间表。此外一些,依据书本上的代码来上机操作,基本不会赶上如何难题。

 

 


第13章 用户评价

1.书本148页和151页实际上机运行结果

 sqlite 42

sqlite 43

 

 

注:本章首要实现博客的用户评价功效,以及添加了一个协管员权限,具体贯彻没有什么难题,按照书本的代码上机操作即可。

 

 

 


第14章 应用编程接口

1.书本168页测试打印结果

此地具体操作需要先在CMD中开拓服务,才能拿到api中多少。(PS:推荐一篇博客:http://blog.csdn.net/huang5487378/article/details/60778293

运转结果:

 sqlite 44

sqlite 45

 

 

 

网站地图xml地图