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

目录

前言

第8章 用户认证

第9章 用户角色

第10章 用户资料

第11章 博客文章

第12章 关注者

第13章 用户评论

第14章 应用编程接口

 


前言

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

本文记录自己学习《Flask Web开发——基于Python的Web应用开发实践》的第8章-第14章内容。相比于刚开始学习第1-7章内容来说,本部分内容实战性更强,而且在书本上遇到的问题也相对较少,如果认真弄懂前7章内容的话,本部分内容相当于是对前7章内容的具体实践,学习也很轻松。

首先说明一下本部分项目示例实现了哪些功能?

  • 用户角色:普通用户、管理员
  • 具体功能:登陆、注册、发布文章、编辑文章、用户间关注、用户评论、修改个人信息、管理用户评论、MarkDown显示文章格式。

下图中所示为一个管理员角色登陆系统各部分功能图片动态图:

我自己上机演练代码:(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

解决办法如下图:

紧接着,如果还是安装书本上命令提示输入命令,会报以下错误:Traceback (most recent call last):File "<console>", line 1, in <module>

解决办法见下图:

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

本问题在于数据库设计含有外键,直接按照书中插入代码,未插入用户角色外键,是无法插入数据的。

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

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

然后按照下图所示三步,重新创建数据库(PS:此处方法见第5章5.11节):

这些处理完毕后,依照书上插入代码,依旧会报找不到User和db错误,解决办法如下:

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

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

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

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

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

解决办法见下图:

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

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

测试is_authenticated方法如下:

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

出现上图的原因:

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

解决来源(https://github.com/maxcountryman/flask-login/issues/302):

运行成功界面如下:

下面是我自己修改数据库数据中邮箱验证属性为True时显示结果(PS:主要在于邮箱验证时需要申请临时密码,所以就没填写具体邮箱数据,直接手动改写后台数据库中数据):

注:第8章主要讲解了如何使用Flask框架实现用户登陆、注册功能,以及使用邮箱进行用户注册确认以及密码修改确认等。感觉第8章内容就是对书本前7章内容的一次综合练习,所有使用的技术点都可以在前7章中找到。所以,个人感觉只要踏实把第8章所有代码以及实现思路弄懂,才算是刚刚入门Flask框架。


第9章 用户角色

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

由于在第8章实现过程中,我把Role表和User表之间的外键关系给删除了,如果在这章不重新回复两表之间的关系就无法实现用户角色的功能。所以,在这种情况下,我又得要把数据库重新初始化、迁移和创建。之所以这么做,而不是直接进行迁移和创建,是因为我在直接进行迁移和创建的过程中,报错:default属性在框架中已经存在,无法创建新的Role表,这个错误没有解决,由于初学,无奈,直接删除migrations文件夹和生成的data-dev.sqlite数据库文件,重新进行初始化、迁移和创建,发现一切OK。具体如下:

好了,既然Role表和User表之间有了一对多而存在的外键关系,那注册功能插入用户数据时,必须得要确认用户角色,否则无法插入。

刚刚进行了注册测试,竟然不用确定用户角色,也可以插入成功。这样的感觉违背了我学习数据库的理论知识啊,之前第5章,进行插入数据时,行不通,现在好了。估计是之前学习时,代码有点bug。

注:本章相当于主要在讲数据库的知识,和本书核心Flask框架的知识点联系不大,其中核心思想就是定义权限来分配角色等级。一个用户有的只有一种权限,有的可以有多种权限。权限的分配很灵活,这样处理操作大大简化了数据库的设计难度,也提高了数据的条理性。


第10章 用户资料

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

此处按照书本上的代码讲解,进行编写代码操作,其中遇到的问题在前面均已遇到过,所以到了此处基本没啥难点。按照书本讲解,运行结果具体如下:

用户简介页面

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

管理员修改个人信息界面

显示用户头像的资料页面

注:本章主要实现博客系统普通用户和管理员角色的个人信息编辑功能实现,此处实现没有什么技术亮点和难点,只要认真完成书本前述部分,这部分功能完全没有障碍。


第11章 博客文章

1.有关书本119页示例11-8代码

本部分代码在作者GitHub上没有示例代码,即如果要实现导入虚拟数据测试功能,只能自己一个代码一个代码敲。不过,这个也太多了点,一个字母出错就要改错>~<。从作者GitHub上直接克隆下来的代码,虽然没有示例代码,但是应该是作者更新代码后,在此处换了另一种实现方式,因为在项目文件中出现了一个新的fake.py文件,该文件中代码和示例11-8代码基本类似。

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

注:本章是对博客系统功能的扩展,主要实现用户编辑发送博客文章,其中还可以使用MarkDown来实现对文章的编辑。功能具体实现参照书本的代码讲解即可,基本不会遇到什么较难的问题。


第12章 关注者

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

 2.操作完第12章代码后,如果选择用户退出,可能会出现以下bug:AttributeError: ‘AnonymousUser‘ object has no attribute ‘followed_posts‘

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

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

注:本章具体实现部分的难点是关注用户记录的数据库表的设计,即多对对关系会生成一张中间表。其它部分,按照书本上的代码来上机操作,基本不会遇到什么难点。


第13章 用户评论

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

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


第14章 应用编程接口

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

此处具体操作需要先在CMD中打开服务,才能获取api中数据。(PS:推荐一篇博客:http://blog.csdn.net/huang5487378/article/details/60778293

运行结果:

时间: 2024-10-31 20:35:41

《Flask Web开发——基于Python的Web应用开发实践》一字一句上机实践(下)的相关文章

《Flask Web开发 基于Python的Web应用开发实战》简评

指路牌 <Flask Web开发><Flask Web开发 基于Python的Web应用开发实战><Flask Web开发>是否适合新手入门Python Web开发? 正文 <Flask Web开发 基于Python的Web应用开发实战>,O'Reilly"动物书系列"的"狗书",应该是很多Flask初学者被推荐使用的入门书,但是这本书真的适合初学者吗? Python的Web框架非常多,例如Django.Flask.T

《FlaskWeb开发基于Python的Web应用开发实战第2版》中英PDF+源代码等4本书学习

资源链接:https://pan.baidu.com/s/1p7CyLEodCy3e1u93jTVQLg<Flask Web开发 基于Python的Web应用开发实战第2版>中英PDF+源代码以及第1版中英PDF+源代码等4本书中文版PDF,324页,带目录和书签,文字能够复制粘贴:英文版PDF,394页,带目录和书签,文字能够复制粘贴:配套源代码:经典书籍第二版,讲解详细:如图: 原文地址:http://blog.51cto.com/13371447/2322857

Flask之旅《Flask Web开发:基于Python的Web应用开发实战》学习笔记

<Flask Web开发:基于Python的Web应用开发实战> 点击上方的"目录"快速到达哦! 虽然简单的网站(Flask+Python+SAE)已经上线,但只是入门.开发大型网站,系统地学习一遍还是有必要的. 1 虚拟环境 2016-6-8 书上介绍了 virtualenv,每个venv都会拷贝一份packages到项目 /venv目录. virtualenv venv venv\Scripts\activate.bat (venv) $ pip freeze >

《Flask Web开发:基于Python的Web应用开发实战》pdf 免费下载

<Flask Web开发:基于Python的Web应用开发实战>pdf 免费下载链接: https://u253469.ctfile.com/fs/253469-292665036 第一部分 Flask 简介第1 章 安装 .........................................................................................................................................

《Flask Web开发:基于Python的Web应用开发实战》pdf 完整版免费下载

<Flask Web开发:基于Python的Web应用开发实战>.pdf pdf 完整版免费下载: https://u253469.ctfile.com/fs/253469-292665036 更多电子书下载: http://hadoopall.com/book 内容简介 本书不仅适合初级Web开发人员学习阅读,更是Python程序员用来学习高级Web开发技术的优秀参考书. ? 学习Flask应用的基本结构,编写示例应用: ? 使用必备的组件,包括模板.数据库.Web表单和电子邮件支持: ?

[分享]《Flask Web开发:基于Python的Web应用开发实战(第2版)》中文PDF+源代码

下载:Flask Web开发第二版<Flask Web开发:基于Python的Web应用开发实战>第二版中文PDF,324页,带目录和书签,文字能够复制粘贴:配套源代码:经典书籍第二版,讲解详细,分三部分,全面介绍如何基于Python微框架Flask进行Web开发. 如图: 原文地址:http://blog.51cto.com/14086980/2320849

Flask Web开发:基于Python的Web应用开发实战PDF

Flask Web开发:基于Python的Web应用开发实战PDF 百度网盘 链接:https://pan.baidu.com/s/1_Ax_ubMUOwwfoNPUn2mDeQ 提取码:s39f 复制这段内容后打开百度网盘手机App,操作更方便哦 内容简介  · · · · · · 本书不仅适合初级Web开发人员学习阅读,更是Python程序员用来学习高级Web开发技术的优秀参考书. ? 学习Flask应用的基本结构,编写示例应用: ? 使用必备的组件,包括模板.数据库.Web表单和电子邮件支

学习参考《Flask Web开发:基于Python的Web应用开发实战(第2版)》中文PDF+源代码

在学习python Web开发时,我们会选择使用Django.flask等框架. 在学习flask时,推荐学习看看<Flask Web开发:基于Python的Web应用开发实战(第2版)> 分三部分,全面介绍如何基于Python微框架Flask进行Web开发.第一部分是Flask简介,介绍使用Flask框架及扩展开发Web程序的必备基础知识.第二部分则给出一个实例,真正带领大家一步步开发完整的博客和社交应用Flasky,从而将前述知识融会贯通,付诸实践.第三部分介绍了发布应用之前必须考虑的事项

电子书 flaskweb开发:基于Python的Web应用开发实战.pdf

作为PythonWeb开发的微框架,Flask独树一帜.它不会强迫开发者遵循预置的开发规范,为开发者提供了自由度和创意空间. <图灵程序设计丛书·Flask Web开发:基于Python的Web应用开发实战>作者拥有25年软件开发经验,而<图灵程序设计丛书·Flask Web开发:基于Python的Web应用开发实战>则采用讲解与实例相结合的方式,不仅介绍了Flask安装.使用等基础知识,而且还带领读者一步一步地开发了社交博客Flasky.即使从未接触Flask,你也能轻松学会构建