Flask开发实战:前言
Posted xuehuafeixuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask开发实战:前言相关的知识,希望对你有一定的参考价值。
Flask 好不好自己去网络找,本系列博文参考李辉的《Flask Web开发实战》
一本书核心内容
本书由三部分组成,分别为基础篇、实战篇、进阶篇,共16章。本书章节经过精心设计,力求让读者可以循序渐进地掌握Flask开发的基础知识和技巧。
第一部分:基础篇。介绍Flask开发相关的基础知识。
·第1章:搭建开发环境,编写一个最小的Flask程序并运行它,了解Flask基本知识。
·第2章:介绍Flask与HTTP的交互方式以及相关的Flask功能。
·第3章:介绍Jinja2模板的使用。
·第4章:介绍Web表单的创建和表单数据的验证。
·第5章:介绍在Flask程序中使用数据库进行CRUD操作。
·第6章:介绍在Flask程序中发送电子邮件的几种方式。
第二部分:实战篇。通过几个示例程序来介绍Flask开发中各类功能的实现方法和技巧。
·第7章:通过一个简单的留言板程序SayHello介绍Web开发的基本流程和基本的项目管理方式,对第一部分的基础知识进行简单回顾。 ·第8章:通过个人博客程序Bluelog介绍CRUD操作、用户认证、文章评论、管理后台等功能。
·第9章:通过图片社交程序Albumy介绍用户注册和认证、用户权限管理、图片上传与处理、用户头像、复杂的数据库关系、复杂的数据库查询、全文搜索等内容。
·第10章:通过待办事项程序Todoism介绍单页应用、国际化与本地化、WebAPl、OAuth服务器端实现等内容。
·第11章:通过聊天室程序CatChat介绍Websocket应用、OAuth客户端实现(第三方登录)、Markdown支持、代码语法高亮等内容。
第三部分:进阶篇。介绍lask程序的部署流程,如测试、性能优化、部署上线;介绍Flask开发的进阶话题,如Flask扩展开发、Flask源码与机制分析。
·第12章:介绍Flask程序的自动化测试,包括单元测试和UI测试的编写、计算测试覆盖率和代码质量检查。
·第13章:介绍对Flask程序进行性能优化的主要措施,包括函数与数据库查询的性能分析、缓存的使用、静态文件优化。
·第14章:介绍部署Flask程序前的准备,以及部署到Linux服务器和云平台Heroku、PythonAnywhere的完整流程。
·第15章:通过扩展lask-Share来介绍编写Flask扩展的完整流程,从创建项目到上传到PyPI。
·第16章:介绍Flask的一些设计理念,包括底层WSGI的相关实现,并对各个主要功能点进行源码分析。
此外,书的最后还提供了附录A,补充介绍一些Flask学习相关的资源。
阅读前的准备
在开始我们的Flask之旅前,还有一些准备工作要做。首先,你要有一台安装了Python
(https://www.python.org/)的电脑,并且,你要了解Python的基础知识。
提示本书中所有示例程序的代码均通过了Python2.7和Python3.6的测试,建议你选用这两个版本。因为大多数Python包(包括Flask)已经不再支持Python2.6及以下版本,以及Python3.3及以下版本,确保不要使用这些版本。另外,Python官方社区将于2020年1月1日停止对Python2.x的维护,这或许可以作为你选择Python版本时的考量之一。
其次,本书有大量操作需要在命令行(CLI,Command Line Interface)下进行,所以你要熟悉你所在操作系统下的命令行。书中会在涉及操作系统特定的命令时给出提示,Windows系统给出的命令对应的是CMD.exe,Linux和macOS系统则对应的是Bash。
最后,html、CSS、javascript分别作为一个Web页面的结构层、表现层和行为层,是Web开发的基础,你需要对它们有基本的了解。任何一个Web程序都是由单个或多个Web页面,页面上包含的内容,以及按钮、表单等交互组件构成的。在本书中,我们会使用Flask操作HTML页面;为了让HTML页面更加美观,我们会使用CSS定义样式,为了简化编写样式的操作,我们会使用CSS框架,比如Bootstrap(http:/getbootstrap.com/);为了让某些操作更加合理和方便,或为了给程序增加动画效果,我们会使用JavaScript来操作页面元素,为了简化编写JavaScript的工作,我们会使用JavaScript库jQuery(https://jquery.com/)。
@附注 在Web开发中,大部分程序离不开JavaScript,JavaScipt可以很方便、简洁地实现很多页面逻辑和功能。为了更多地介绍Flask,本书将尽量避免使用过多的JavaScipt代码。
如果你还不熟悉这些内容,那么可以通过下面的网站来快速入门:
·w3Schools(https://www.w3schools.com)。
·MDN Web文档(https:/developer.mozilla.org/docs/Web)。
·Codecademy(https://www.codecademy.com)。
使用示例程序
示例程序均使用Git来管理程序版本,为了便于大家获取示例程序,代码均托管在GitHub
(https://github.com/)上。Git(https://git-scm.com/)是最流行的开源VCS(Version Control System,版本控制系统),大多数项目都使用它来追踪文本文件(代码)的变化。Git非常易于上手,如果你还不熟悉它,可以阅读Git简明教程(http://rogerdudler.github.io/git-guide
/index.zh.html)来快速了解Git。
你可以访问Git官网的下载页面(https://git-scm.com/downloads)了解不同操作系统下Git的安装方法,安装成功后即可使用它来获取示例程序。下面介绍了两种使用示例程序的方式。
1.阅读示例程序
因为示例程序都托管在GitHub上,所以阅读示例程序最简单的方式是在浏览器中阅读。在对应的章节,我们会给出示例程序在GitHub上的仓库链接。
如果要在本地阅读,那么首先使用git clone命令把GitHub上的示例程序克隆(即复制)到本地,以本书的项目仓库为例:
s git clone https://github.com/greyli/helloflask.git
提示clone命令后面的参数是远程Git仓库的URL,最后的“.git”后缀可以省略。这里的URL中的传输协议使用了http(s):/协议,你也可以使用git://协议,即git://github.com/greyli
/helloflask.git。
使用ls(即List)命令(Windows下使用dir命令)列出当前目录下的文件信息,你会看到当前目录中多了一个helloflask文件夹,这就是我们刚刚复制下来的项目仓库。下面使用cd(即change directory)命令切换进这个文件夹:
$cd helloflask现在你可以使用你喜欢的文本编辑器打开项目文件夹并准备阅读了。建议使用轻量的文本编辑器来阅读示例代码,比如Atom(https//atom.io/)、Sublime Text(https://www
.sublimetext.com/)或Notepad++(https:/notepad-plus-plus.org/)。
在对应章节的开始处都会包含从GitHub复制程序、创建虚拟环境并运行程序的基本步骤,你可以一边阅读源码,一边实际尝试使用对应的程序功能。
在本书第2部分,示例程序根据章节内容设置了对应的标签,每个标签都对应一个程序版本。届时你就可以使用git tag-n命令查看项目仓库中包含的标签:
$ git tag-n使用git checkout命令即可签出对应标签版本的代码,添加标签名作为参数,比如:
git checkout foo
在后面,书中会在每一次包含更改文件的章节提示应该签出的标签名。如果在执行新的签出命令之前,你对文件做了修改,那么需要使用git reset命令来撤销改动:
git reset--hard
@注意git reset命令会删除本地修改,如果你希望修改示例程序源码并保存修改,可以参考后面的“改造示例程序部分”。
如果你想比较两个版本之间的变化,可以使用git diff命令,添加比较的两个标签作为参数,比如:
$git diff foo bar如果你想更直观地查看版本变化,可以使用下面的命令打开内置的Git浏览客户端:
$ gitk除了内置的Git客户端,还有大量的第三方客户端可以使用,详情可以访问https://git-scm
.com/downloads/guis查看。另外,你也可以访问GitHub的Web页面查看不同版本(标签)的变化,即查看某项目两个版本之间的变化可以访问https://github.com/用户名/仓库名/compare/标签A..标签B,比如对foo和bar标签进行比较可以访问https://github.com/greyli/helloflask/compare/foo..bar。
最后,你可以定期使用git fetch命令来更新本地仓库:
$ git fetch--all $ git fetch--tags $git reset--hard origin/master
以上是关于Flask开发实战:前言的主要内容,如果未能解决你的问题,请参考以下文章
Python开发实战资料分享:《Flask Web开发实战:入门进阶与原理解析》PDF+源代码
学习参考《Flask Web开发:基于Python的Web应用开发实战(第2版)》中文PDF+源代码