前面两篇文章中我们已经了解 Web(HTTP)服务器,Web应用程序,Web框架,WSGI这些 Python Web 开发中的概念。我们知道,Web框架通过将不同Web应用程序中的共性部分给抽象出来,提供一系列通用的接口,从而避免开发者做重复性工作,让其将精力放在业务相关的实现。
接下来一起来看一个具体的 Web 框架,这里选择 Flask,因为它是一个年轻充满活力的微框架,有着众多的拥护者,文档齐全,社区活跃度高。我们的论坛项目 就使用了该框架。
模板渲染Flask 使用 Jinja2 模板渲染引擎来做模板渲染,代码如下:
@app.route('/topic/<int:topic_id>/')
def get_topic(topic_id):
# Do some cal or read from database
# Get the data we need.
return render_template('path/to/template.html', data_needed)
总结一下,Flask处理一个请求的流程就是,首先根据 URL 决定由那个函数来处理,然后在函数中进行操作,取得所需的数据。再将数据传给相应的模板文件中,由Jinja2 负责渲染得到 HTTP 响应内容,然后由Flask返回响应内容。
Flask 入门
关于 Flask 框架的学习,不建议直接读官网文档,虽然这是一手的权威资料,但并不适合初学者入手。这里推荐几个学习资料,可以帮助新手很快的入门:
汇智网flask框架教程:一个非常适合入门的精简教程,主要分为七部分:
- 快速入门
- 路由:URL 规则与视图函数
- 请求、应答与会话
- 上下文对象:Flask 核心机制
- 模版:分离数据与视图
- 访问数据库:SQLAlchemy简介
- 蓝图:Flask应用组件化
教程简练地总结了 Flask 最核心的内容,并且还提供了一个简单的在线练习环境,方便一边学习理论一边动手实践。
此外,麦子学院也有一个 Flask入门 视频教程,一共8小时的视频教程,涵盖flask web 开发的方方面面,包括环境的搭建,flask 语法介绍,项目结构的组织,flask 全球化,单元测试等内容。视频作者有 17 年软件开发经验,曾任微软深圳技术经理及多家海外机构担任技术顾问,够牛!视频讲的也确实不错。
如果上面两个不能满足你,那么还可以看 Flask Web开发:基于Python的Web应用开发实战 这本有着 8.6 评分的书,相信没看完就跃跃欲试想写点什么了。这么优秀的框架,Github 上当然也有 awesome-flask了,想深入学习flask的话,这里不失为一个好的资源帖。
本篇大概谈了下 Flask 的路由分发和模版渲染,下篇我们会继续讲Flask使用中的一些问题。
更多阅读
What is the purpose of Flask's context stacks?
Flask 的 Context 机制
Flask、Django、Pyramid三个框架的对比
网友评论