欢迎光临
免费的PDF电子书下载网站

Python Flask Web开发入门与项目实战 PDF下载

编辑推荐

【本书特色】

  1. 由浅入深:从基本开发环境配置讲起,层层深入到实际项目案例开发。
  2. 实例丰富: 116个实例、28个编程练习题带领读者上手实践。
  3. 注重实战:详解新闻系统网站项目案例开发的完整过程。
  4. 重点突出:重点介绍Flask SQLAlchemy服务端开发,以及Jinja 2模板引擎和Bootstrap前端页面开发。
  5. 涵盖广泛:涵盖Jinja 2、视图操作、数据库访问、Memcached缓存、Bootstrap等热门Web开发技术。

【本书精华内容】

1 ; Flask基础知识

开发环境部署

Flask快速上手

Jinja2 模板引擎

Flask视图高级技术

Flask数据交互

访问数据库

Memcached缓存系统

Bootstrap的基本使用

2 ; CMS新闻系统开发

CMS后台管理员登录实现

CMS后台文章模块基本功能实现

CMS后台基本评论及登录日志等功能的实现

基于角色的访问控制功能实现

CMS网站前台功能实现

CMS系统代码优化

3 ; 网站上线准备及部署

CMS系统性能测试与单元测试

网站部署

 ;

内容简介

本书从Flask框架的基础知识讲起,逐步深入到使用Flask进行Web应用开发实战。其中,重点介绍了使用Flask SQLAlchemy进行服务端开发,以及使用Jinja 2模板引擎和Bootstrap进行前端页面开发的方法,不但可以让读者系统地学习用Python微型框架开发Web应用的相关知识,而且还能对Web开发中基于角色访问权限控制的方法等相关知识有更为深入的理解。本书提供了大量的实战案例引导读者由浅入深地学习Flask Web应用开发,可以让读者的开发水平有质的提升。

本书共16章,分为3篇。第1篇为Flask基础知识,介绍了Flask开发的环境部署及入门知识,内容涵盖了Flask程序的基本结构、Jinja 2模板、Web表单、SQLAlchemy管理数据库、装饰器的定义和使用、Memcached缓存技术等;第2篇为CMS新闻系统开发,介绍了数据库设计、数据库迁移、无限级分类的实现、登录日志、角色的访问权限控制等内容;第3篇为网站上线准备及部署,介绍了Web程序上线部署前必须要进行的单元测试、性能优化和环境部署等内容。

本书内容通俗易懂,案例丰富,实用性强,特别适合Python Web开发的入门读者和进阶读者学习,也适合PHP程序员和Java程序员等其他Web开发爱好者阅读。另外,本书可以作为相关培训机构的教材用书。

作者简介

钱游 ; 毕业于重庆大学计算机科学与技术专业。有十余年的软件开发经验,先后在西部数码成都西维数码科技有限公司和中企动力重庆分公司任职,历任Java程序员、系统架构师等职。参与开发过的项目有重庆力帆集团绩效考核系统、重庆国电睿霖电气有限公司暨物联网云平台、重庆科创职业学院官网、重庆城市职业学院官网等。长期使用Flask框架进行Web应用开发,在Web开发、微商城开发、Android移动开发等领域有丰富的实战经验。现从事移动互联网与物联网应用等领域的研究。

Python Flask Web开发入门与项目实战 PDF下载

目录


 
前言
本书内容导图
第1篇  ;Flask基础知识
第1章  ;开发环境部署 2
1.1  ;Python的安装及配置 2
1.1.1  ;Python的安装 2
1.1.2  ;测试Python是否安装成功 7
1.2  ;虚拟环境的配置 8
1.3  ;PyCharm的安装及使用 11
1.3.1  ;PyCharm的下载及安装 11
1.3.2  ;在PyCharm中新建工程 14
1.3.3  ;在PyCharm中设置UTF-8编码自动创建 15
1.3.4  ;在PyCharm中使用已经设置好的虚拟环境 17
1.4  ;温故知新 20
1.5  ;习题 20
第2章  ;Flask快速上手 21
2.1  ;Web基础知识 21
2.2  ;第一个Flask Web程序 22
2.2.1  ;安装Flask框架 23
2.2.2  ;在Flask中输出Hello World 25
2.3  ;URL传递参数 28
2.4  ;URL反转 29
2.5  ;页面跳转和重定向 30
2.6  ;温故知新 31
2.7  ;习题 31
 ;
第3章  ;Jinja 2模板引擎 33
3.1  ;模板引擎概述及简单使用 33
3.2  ;向模板中传递参数 35
3.3  ;模板中的控制语句之if语句 38
3.4  ;模板中的控制语句之for语句 40
3.5  ;Flask的过滤器 42
3.5.1  ;常见过滤器 42
3.5.2  ;自定义过滤器 44
3.6  ;宏的定义及使用 46
3.6.1  ;宏的定义 46
3.6.2  ;宏的导入 47
3.6.3  ;include的使用 49
3.7  ;set和with语句的使用 50
3.8  ;静态文件的加载 52
3.9  ;模板的继承 54
3.10  ;温故知新 57
3.11  ;习题 57
第4章  ;Flask视图高级技术 58
4.1  ;app.route与add_url_rule简介 58
4.1.1  ;app.route的使用 58
4.1.2  ;add_url_rule的使用 59
4.2  ;Flask类视图 61
4.2.1  ;标准类视图 61
4.2.2  ;基于方法的类视图 63
4.3  ;Flask装饰器 66
4.3.1  ;装饰器的定义和基本使用 66
4.3.2  ;对带参数的函数使用装饰器 68
4.4  ;蓝图 71
4.5  ;温故知新 72
4.6  ;习题 73
第5章  ;Flask数据交互 74
5.1  ;使用Flask处理表单 74
5.1.1  ;使用Flask处理通用表单 74
5.1.2  ;使用Flask-WTF处理表单 76
5.2  ;使用Flask上传文件 80
5.2.1  ;使用Flask上传文件的简单实现 81
5.2.2  ;改进上传功能 84
5.3  ;Cookie的使用 86
5.3.1  ;Cookie的基本概念 86
5.3.2  ;Cookie的基本使用 87
5.3.3  ;设置Cookie的作用域 90
5.4  ;Session的使用 92
5.4.1  ;Session的基本配置 92
5.4.2  ;Session的基本使用 93
5.5  ;钩子函数的使用 95
5.6  ;温故知新 97
5.7  ;习题 97
第6章  ;访问数据库 98
6.1  ;MySQL数据库安装 98
6.1.1  ;下载及安装MySQL 98
6.1.2  ;测试MySQL是否安装成功 99
6.2  ;Python数据库框架MySQL-Python 100
6.2.1  ;MySQL-Python安装 100
6.2.2  ;通过Python操作数据库对象 101
6.3  ;通过MySQL-Python进行更新数据操作 105
6.3.1  ;增加数据 105
6.3.2  ;修改数据 106
6.3.3  ;删除数据 107
6.4  ;初识Flask-SQLAlchemy 108
6.4.1  ;SQLAlchemy的安装 108
6.4.2  ;对象-关系映射实质 110
6.4.3  ;为什么使用ORM 111
6.5  ;Flask-SQLAlchemy初始化 112
6.6  ;Flask-SQLAlchemy模型与表映射方法1 114
6.7  ;Flask-SQLAlchemy模型与表映射方法2 118
6.8  ;数据的增、删、改、查 119
6.8.1  ;数据添加 119
6.8.2  ;数据查询 121
6.8.3  ;数据修改 122
6.8.4  ;数据删除 123
6.9  ;使用Flask-SQLAlchemy创建一对一的关系表 124
6.10  使用Flask-SQLAlchemy创建一对多的关系表 126
6.11  使用Flask-SQLAlchemy创建多对多的关系表 128
6.12  Flask-Script工具的使用 130
6.12.1  安装Flask-Script并初始化 130
6.12.2  Command子类创建命令 131
6.12.3  使用Command实例的@command修饰符 132
6.12.4  使用Command实例的@option修饰符创建命令 132
6.13  Flask循环引用 133
6.14  使用Flask-Migrate实现数据库迁移 136
6.14.1  安装Flask-Migrate插件 136
6.14.2  使用Flask-Migrate的步骤 136
6.15  温故知新 139
6.16  习题 139
第7章  Memcached缓存系统 140
7.1  Memcached的安装 140
7.1.1  Memcached的基本概念 140
7.1.2  Memcached的安装 141
7.2  Memcached的基本使用 143
7.2.1  set和set_multi命令的使用 143
7.2.2  get和get_multi命令的使用 144
7.2.3  add命令的使用 145
7.2.4  replace命令的使用 146
7.2.5  append和prepend命令的使用 147
7.2.6  delete和delete_multi命令的使用 148
7.2.7  decr和incr命令的使用 149
7.3  Memcached的安全机制 150
7.4  温故知新 151
7.5  习题 151
第8章  Bootstrap的基本使用 152
8.1  Bootstrap简介 152
8.2  全局CSS样式 154
8.3  栅格系统 156
8.4  Bootstrap CSS代码 162
8.5  Bootstrap表格 165
8.5.1  基础表格 165
8.5.2  条纹状表格 167
8.5.3  带边框的表格 168
8.5.4  紧凑的表格和响应式表格 170
8.5.5  状态类 172
8.6  Bootstrap表单 173
8.6.1  垂直表单 174
8.6.2  内联表单 175
8.6.3  水平表单 180
8.6.4  支持的表单控件 181
8.7  Bootstrap按钮 182
8.8  温故知新 185
8.9  习题 186
第2篇  CMS新闻系统开发
第9章  CMS后台管理员登录实现 188
9.1  CMS系统基本蓝图 188
9.2  用户模型定义 190
9.2.1  建立数据库连接并创建用户模型 190
9.2.2  用户登录密码明文变密文的处理 193
9.3  管理员登录 194
9.3.1  登录页的渲染 194
9.3.2  初步实现用户的登录 196
9.3.3  优化登录-对表单进行过滤验证 199
9.3.4  优化登录-启用登录验证码 200
9.3.5  优化登录-记住我功能实现 205
9.4  限制用户访问 206
9.5  用户名注销功能实现 207
9.6  温故知新 209
9.7  习题 210
第10章  CMS后台文章模块基本功能实现 211
10.1  管理员信息展示 211
10.1.1  管理员个人详情页搭建 211
10.1.2  管理员个人详情页实现 214
10.1.3  管理员密码修改 215
10.2  文章栏目页的实现 220
10.2.1  栏目无限级分类添加进数据库 221
10.2.2  栏目的编辑功能 224
10.2.3  栏目的删除功能 233
10.3  文章的添加、修改、删除功能的实现 235
10.3.1  文章添加功能的基本实现 235
10.3.2  文章的列表显示 244
10.3.3  文章的编辑修改 247
10.3.4  文章的删除 252
10.4  温故知新 256
10.5  习题 256
第11章  CMS后台基本评论及登录日志等功能的实现 258
11.1  评论信息管理 258
11.1.1  评论信息管理页面搭建 258
11.1.2  评论的下架和发布功能实现 267
11.1.3  评论的删除功能实现 271
11.2  登录日志、操作日志等功能实现 273
11.2.1  登录日志功能的实现 273
11.2.2  登录日志批量删除功能的实现 280
11.3  温故知新 282
11.4  习题 283
第12章  基于角色的访问控制功能实现 284
12.1  权限、角色、用户的数据库设计 284
12.2  权限管理 286
12.2.1  添加权限 286
12.2.2  权限的列表显示 290
12.2.3  权限的编辑 294
12.2.4  权限的删除 295
12.3  角色管理 297
12.3.1  角色的添加 297
12.3.2  角色的列表显示 301
12.3.3  角色的编辑功能实现 303
12.3.4  角色的删除功能实现 305
12.4  基于角色的访问控制思想及实现 307
12.5  温故知新 310
12.6  习题 310
第13章  CMS网站前台功能实现 311
13.1  用户的注册和登录功能 311
13.1.1  用户注册页面的设计 311
13.1.2  用户注册功能的实现 315
13.1.3  用户登录功能的实现 318
13.2  网站首页的基本实现 324
13.3  文章详情页功能实现 326
13.4  网站404页面功能实现 329
13.5  温故知新 330
13.6  习题 331
第14章  CMS系统代码优化 332
14.1  CSRF攻击与防御 332
14.2  视图函数的一些优化 334
14.3  将验证码保存到Memcached中 336
14.4  温故知新 337
14.5  习题 337
第3篇   网站上线准备及部署
第15章  CMS系统性能测试与单元测试 340
15.1  慢查询SQL的检测与记录 340
15.2  Flask单元测试 342
15.3  温故知新 348
15.4  习题 348
第16章  网站部署 349
16.1  服务器部署 349
16.1.1  Gunicorn的安装配置及使用 350
16.1.2  Nginx的安装及使用 352
16.1.3  安装MySQL 354
16.2  网站部署 354
16.3  温故知新 356
16.4  习题 356

 

本书内容导图

媒体评论

本书围绕Flask框架展开讲解,从理论到实战,带领读者实现从零基础入门到动手实践项目开发的飞跃。书中贯穿了作者总结的大量开发经验与实践思考,对开发人员有很大的借鉴意义。

——现伯翰国际总经理(原华派科技CTO/人梯国际CTO  王勇

这是一本实用性很强的书。书中的章节经过了精心编排,可以满足不同层次读者的阅读需求。书中对基础知识和实践内容做了科学的安排,可以让读者循序渐进地掌握Flask开发的相关知识和各种开发技巧。

——神兔未来科技有限公司创始人  王静逸

本书从基本概念讲起,一步步引导读者掌握Flask框架及其应用开发。书中重点介绍了Flask开发中的模板引擎、数据交互、数据库访问和缓存系统等内容,还介绍了用Flask开发开源内容管理系统,以及基于角色访问控制等进阶内容,是一本很适合Python爱好者学习Web开发的读物。

——北京邮电大学国际学院企业顾问团专家  段超

前沿

Flask诞生于2010年,是Armin ronacher用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架。时至今日,使用Flask开发Web等应用程序的人越来越多,使用Flask微框架也越来越流行。

目前,Python的就业前景还是非常好的。国内Python人才需求呈大规模上升,薪资水平也水涨船高。在Linux运维、Python Web网站工程师、Python自动化测试、数据分析和人工智能等诸多领域,对Python人才的需求非常旺盛。目前,业内几乎所有大中型互联网企业都在使用Python,如Youtube、Dropbox、BT、Quora(类似于中国的知乎)、豆瓣、知乎、Google、Yahoo、Facebook、NASA、百度、腾讯、汽车之家和美团等。很多知名企业的网站,诸如豆瓣、知乎和拉勾网等都是用Python语言开发的。熟练掌握Python语言与Python框架Flask,入职名企妥妥的。

Flask的优势

Web网站发展至今,特别是服务器端,涉及的知识非常广泛,这对程序员的要求会越来越高。如果采用成熟、稳健的框架,那么一些诸如安全性、数据流控制等类型的基础性工作都可以让框架来处理,而程序开发人员则可以把更多的精力放在具体业务逻辑功能的实现和优化上。

使用Flask框架的优势有以下几点:

可以大大降低开发难度,提高开发效率,让快速、高效的Web开发成为可能。

可以带来系统稳定性和可扩展性的提升。Flask自由、灵活、可扩展性强、第三方库的选择面广,用第三方库可以实现自己想要的功能,而且很多第三方库还可以定制与裁减。

对于初学者来说简单易学,入门门槛很低,即便没有多少Web开发经验,也能很快做出网站,大大节约了初学者的学习成本。

综上所述,Flask是一个用Python语言编写的Web微框架,可以让开发人员快速开发各种Web应用。

笔者在长期的Flask框架使用过程中有切身体会:使用该框架进行Web开发,的确省时、省事、省力。比如表单数据的校验、CSRF攻击与防御等提供了相应模块,直接拿过来就可以使用。默认情况下,Flask不包含数据库抽象层和表单验证等功能。然而Flask支持用扩展来给应用添加这些功能,就如同是用Flask实现的一样。众多的扩展提供了数据库集成、表单验证、上传处理和各种各样的开放认证技术等功能。为了把这些心得体会分享给广大的Web开发人员,笔者编写了本书。本书主要介绍了如何基于Python的微框架Flask进行Web开发,内容安排从易到难,讲解由浅入深、循序渐进,可以帮助读者快速掌握Flask Web开发的大部分常用技术点。

本书特色

由浅入深:本书从基本的开发环境配置讲起,层层深入到实际项目案例开发,切实为读者朋友提供了高效学习Flask框架的好方法。

内容全面:本书涵盖Flask开发的方方面面,包括Jinja 2、视图操作、数据库访问、Memcached缓存和Bootstrap等众多内容。

实例众多:本书注重“讲练”结合,讲解的实例多达116个,还提供了28个配套编程练习题,让读者朋友可以通过大量的动手实践迅速掌握Flask开发。

注重实战:本书第2、3篇结合新闻系统网站开发,将一个完整的动态网站项目划分为典型的工作任务,让读者在完成工作任务的过程中学习新技术和新技能。

本书内容

第1篇  Flask基础知识(第1~8章)

本篇主要介绍了Flask开发环境的部署与配置,并重点介绍了Flask开发所需要掌握的基础知识,涵盖Flask程序基本结构、Jinja 2模板引擎、高级视图、Flask数据交互、数据库访问和Memcached缓存系统等内容。

第2篇  CMS新闻系统开发(第9~14章)

本篇主要介绍了CMS系统后台管理员登录实现、CMS系统后台文章模块基本功能实现、CMS后台基本评论及登录日志等功能实现、基于角色的访问控制功能实现、CMS网站前台功能实现和CMS系统代码优化等相关内容,涉及数据库设计、数据库迁移、无限级分类、登录日志、角色访问权限控制等相关知识点。

第3篇  网站上线准备(第15、16章)

本篇主要介绍了Web程序上线部署前必须要进行的单元测试、性能优化和环境部署等相关内容。

配套资源获取方式

本书涉及的源代码文件等配套资料需要读者自行下载。请在华章公司的网站www.hzbook.com上搜索到本书,然后单击“资料下载”按钮,即可在本书页面上找到“配书资源”下载链接,单击该链接即可下载。

本书读者对象

本书适合熟悉Python编程语言,并具备CSS、HTML和jQuery等前端开发基础知识,且有志于通过Flask框架开发Web应用的编程爱好者、程序员和软件工程师等人员学习和参考,另外还适合Flask全栈开发培训机构的培训学员。主要如下:

想用Python快速开发网站的人员;

前端开发者想要学习后端开发技术的程序员;

熟悉Python其他框架的开发人员;

熟悉Java和PHP等编程语言而想快速开发网站的程序员;

其他Web编程爱好者;

各大院校的学生;

相关培训机构的学员。

如果你是这几类人中的一员,那么本书就适合你。只要你能坚持学习完本书内容,并按本书设计的案例和习题进行动手实践和思考,相信当你完成了书中的所有项目案例后,就可以胜任网站开发这项工作了。

本书作者

本书由钱游编写完成。笔者长期使用Flask技术进行Web应用开发,有十余年软件开发经验,在Web开发、微商城开发、Android移动开发等领域有丰富的实战经验。笔者现在从事移动互联网与物联网应用等领域的开发与研究。

在本书的编写过程中,为确保内容的正确性而参阅了很多资料。在此,对本书所参考的资料或图书的原作者表示诚恳的感谢!对不能一一标明资料来源的作者表示真诚的歉意和敬意!对直接或间接为本书的出版倾注了智慧、付出了心力、提供了良好建议及帮助的所有人表示感谢!

由于水平所限,加之写作时间仓促,书中难免存在错误和不严谨之处,恳请同行专家和读者不吝指正。读者在阅读本书的过程中若有疑问,可以发电子邮件获得帮助。

编著者

免费在线读

第3章  Jinja 2模板引擎
在Flask中通常使用Jinja 2模板引擎来实现复杂的页面渲染。Jinja 2被认为是灵活、快速和安全的模板引擎技术,被广泛使用。Jinja 2的设计思想来源于Django模板引擎, 它功能强大、速度快,并且提供了可选的沙箱模板执行环境安全保证机制,具有沙箱中执行、强大的HTML转义系统、模板继承等诸多优点。本章主要介绍Jinja 2模板引擎的基本结构和基本使用方法。
本章主要涉及的知识点有:
? 如何使用Flask渲染模板;
? 在模板中传递一个或多个参数;
? if语句在模板中的使用;
? for语句在模板中的使用。
3.1  模板引擎概述及简单使用
随着不同终端(个人PC、平板电脑,手机、移动穿戴设备等)的兴起,开发人员在越来越多地思考:如何写一份功能代码(业务逻辑代码),这份业务逻辑代码能够在响应式或非响应式设备上都能使用。为了提升开发效率,开发人员开始高度重视前后端的分离,后端负责业务逻辑/数据访问,前端负责表现、交互逻辑,同一份业务逻辑代码可应用于多个不同终端的视图渲染。后端实际上实现的功能一般叫做业务逻辑,前端完成的功能一般叫做表现逻辑。如果把业务逻辑和表现逻辑混在一起,势必造成系统耦合度高、代码维护困难的现象,因此分离业务逻辑和表现逻辑,把变现逻辑交给视图引擎,即网页模板,很有必要。
模板实质上是一个静态的包含HTML语法的全部或片段的文本文件,也可包含由变量表示的动态部分。使用真实值替换网页模板中的变量,生成对应数据的HTML片段,这一过程称为渲染。Flask提供了Jinja 2模板引擎来渲染模板,下面逐步介绍其模板渲染机制。
在PyCharm中新建一名称为3-1的工程,在工程中templates的文件夹下新建index.html文件,代码如下:
 
例3-1  Jinja 2模板的渲染示例:index.html
 
01  
02  
03  
04      
05      
这是首页
06      

这是首页中文字!

07  
08  
09  
10  
 
在工程中templates的文件夹下新建user.html文件,代码如下:
例3-1  Jinja 2模板的渲染示例:user.html
 
01  
02  
03  
04      
05      
这是用户中心
06      

这是用户中心!

07  
08  
09  
10  
 
app.py文件的代码如下:
例3-1  Jinja 2模板的渲染示例:app.py
 
01   from flask import Flask #导入Flask模块
02   from flask import render_template #导入render_template模块
03   app = Flask(__name__) #Flask初始化
04   @app.route(/) #定义路由
05   def index(): #定义视图函数
06       return render_template(index.html) #使用render_template方法渲
染模板
07   @app.route(/user/
) #定义路由
08   def user(username): #定义视图函数
09       return render_template(user.html) #使用render_template()方
法渲染模板
10   if __name__ == \__main__: #当模块被直接运行时,代码将被
运行,当模块是被导入时,代码
不被执行
11       app.run(debug=True) #开启调试模式
 
01行表示导入Flask模块;02行表示导入render_template模块;03行表示Flask初始化;04行定义路由;05行定义视图函数;06行使用render_template()方法渲染模板;07行定义路由;08行定义视图函数;09行使用render_template()方法渲染模板;10行表示当模块被直接运行时,代码将被运行,当模块是被导入时,代码不被执行;11行表示开启调试模式。
运行程序,得到如3.1图所示结果。
 
图3.1  模板的基本渲染
Flask通过render_template()函数来实现模板的渲染。要使用Jinja 2模板引擎,需要使用from flask import render_template命令导入render_template函数。在视图函数的return方法中,render_template()函数的首个参数声明使用哪一个模板文件。
?注意:在render_template()函数中,有一个参数是用来声明使用哪个静态文件,除此参数之外,还可以有多个参数,具体参阅下面的章节。
3.2  向模板中传递参数
Flask提供Jinja 2模板引擎来渲染模板的同时,还可以将程序中的参数或变量值传递给指定的模板进行渲染。
在PyCharm中新建一名称为3-2的工程,在工程中的templates文件夹下新建index.html文件,代码如下:
例3-2  Jinja2模板的参数传递示例:index.html
 
01  
02  
03      
04      
这是首页
05      

这是首页中文字!

06  
07  
08  
09  
 
在工程中templates文件夹下新建user.html文件,代码如下:
例3-2  Jinja 2模板的参数传递示例:user.html
 
01  
02  
03  
04      
05      
这是用户中心
06      

欢迎您:{{name}}

07  
08  
09  
10  
 
app.py文件的代码如下:
例3-2  Jinja 2模板的参数传递示例:app.py
 
01   from flask import Flask #导入Flask模块
02   from flask import render_template #导入render_template模块
03   app = Flask(__name__) #Flask初始化
04   @app.route(/) #定义路由
05   def index(): #定义视图函数
06       return render_template(index.html) #渲染模板
07   @app.route(/user/
) #定义路由
08   def user(username): #定义视图函数
09       return render_template(user.html, name=username) #渲染模板并向模
板传递参数
10   if __name__ == \__main__: #当模块被直接运行时,代码将被运行,当模块是
被导入时,代码不被执行
11       app.run(debug=True) #开启调试模式
 
01行表示导入Flask模块;02行表示导入render_template模块;03行表示Flask初始化;04行表示定义路由;05行表示定义视图函数;06行渲染模板;07行定义路由;08行表示定义视图函数;09行表示渲染模板并向模板传递参数;10行表示当模块被直接运行时,代码将被运行,当模块被导入时,代码不被执行。
运行程序,得到如图3.2所示结果。
 
图3.2  Flask向模板传递参数
render_template()函数第一个参数是指定模板文件的名称,比如这里的index.html和user.html。render_template()函数的第二个参数为可选项,可以为空。比如index()视图函数中的render_template(index.html),这里第二个参数为空。第二个参数不为空的话,一般用于向模板中传递变量。这里传递变量,一般是以键值对方式进行的。
 
01   @app.route(/)
02   def index():
03     title = python的键值对
04     author= om_jack
05     return render_template(index.html, var1=title, var2=author)
 
用上述代码替换index()视图函数代码,在index.html的和区域增加下面的代码:
 
01  
02   {{ var1 }}

{#br表示网页中的回车#}
03    {{ var2 }}
04  
 
再次运行程序,得到如图3.3所示结果。
 
图3.3  向模板传递多个值
模板中接收变量值,需要把变量放在{{ }},比如{{ var1 }}等。模板中如果要写注释,格式为{# #},比如这里的{#br表示网页中的回车#}。
如果视图函数中有多个变量值都需要传递给模板,可以使用**locals()方法,例如:
 
01   def index(): #定义index函数
02       # return render_template(index.html)
03       title = python的键值对 #定义键值
04       author = om_jack #定义键值
05       return render_template(index.html, **locals()) #渲染模板并传值
 
实际上是将return render_template(index.html, var1=title, var2=author)这行代码替换为return render_template(index.html, **locals())。将模板文件index.html中的{{ var1 }}

{{ var2 }}替换为{{ title }}

{{ author }}即可。
?注意:在render_template()函数中,如果要给模板传递全部的本地变量,可以使用**locals()方法,此时,在模块中可以直接使用{{title}}和{{author}}来直接使用变量。


在Flask中通常使用Jinja 2模板引擎来实现复杂的页面渲染。Jinja 2被认为是灵活、快速和安全的模板引擎技术,被广泛使用。Jinja 2的设计思想来源于Django模板引擎, 它功能强大、速度快,并且提供了可选的沙箱模板执行环境安全保证机制,具有沙箱中执行、强大的HTML转义系统、模板继承等诸多优点。本章主要介绍Jinja 2模板引擎的基本结构和基本使用方法。

Python Flask Web开发入门与项目实战 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:Python Flask Web开发入门与项目实战