Flask —— 使用Python和OpenShift进行即时Web开发

最近Packtpub找到了我,让我给他们新出版的关于Flask的书写书评。Flask是一个很流行的Python框架。那本书是Ron DuPlain写的《Flask 即时Web开发》。我决定把“30天学习30种新技术”挑战的第三天花在Flask上。在本文中,我首先将介绍Flask框架的一些基本知识,然后提供一个短篇的书评。同样,我也会把示例应用移植到OpenShift上。对于Flask而言我不是一个完全意义上的新手,我也用它创建过示例应用。对我来说,这是一次很好的温习。

给不了解这一系列文章的读者:我正在尝试“30天学习30种新技术”的挑战。每天我会学习一种新技术,然后写一篇文章介绍下我学到了什么,我怎样使用新学的工具。如果一天不够一项技术,我会每天讨论一个关于该项技术的子话题。

Flask是什么?

有些开发者可能没听说过Flask,我来简单介绍一下吧。Flask是一个基于Python的微型的web开发框架。虽然Flask是微框架,不过我们并不需要像别的微框架建议的那样把所有代码都写到单文件中。毕竟微框架真正的含义是简单和短小。我们可以从单文件架构开始工作,只用需要的特性。等我们渐渐熟悉Flask之后,可以将代码提取成模块,同时学习Flask提供的高级功能。Flask没有给出关于文件架构的建议,但是在这篇文章的后面我会讨论书中建议的文件架构。

让我们看一段示例代码吧:

from flask import Flask
app = Flask(__name__)

@app.route(‘/‘, defaults={‘name‘:"Guest"})
@app.route(‘/<string:name>‘ , methods=[‘GET‘])
def say_hello(name):
    return "Hello " + name

if __name__ == "__main__":
    app.run(debug=True)

这个例子很简单,但是很有表达力。坐下来好好欣赏下。

我们来解释一下上面的代码吧:

  1. 第一行导入了Flask类,以便创建一个Flask应用的实例。
  2. 接下来一行我们创建了一个Flask类的实例。这是一个WSGI应用实例。WSGI是“Web服务器网关接口”(Web Service Gateway Interface)的缩写,同时也是架设web项目的Python标准。这一行要告诉Flask到哪里去找应用所需的静态资源和模板。在我们的例子中,我们传递了name,让Flask在当前模块内定位资源。
  3. 接着我们定义了一些关于/的路由。第一个路由是为根路径/准备的,第二个则对应于类似/shekhar/abc之类的路径。对于/路由,我们将初始的name设定为Guest。如果用户访问 http://localhost:5000/ ,那么他会看到Hello Guest。如果用户访问 http://localhost:5000/shekhar ,那么他会看到 Hello shekhar
  4. 最后我们使用python app.py命令来启动开发服务器,以运行应用。我们把上面的代码复制到app.py文件中。我们同时通过Debug=True开启了调试,这样当意料之外的情况出现时,浏览器就可以提供一个交互式的调试器。开启调试的另一个好处是,改动文件 之后,服务会自动重新加载。我们可以让调试器在后台运行,然后继续在我们的应用上工作。这提供了高效的开发环境。你可以问问Java开发者如何实现自动重新加载 :)

关于Flask值得知道的一些事:

  1. Flask由Armin Ronacher于2010年创建。
  2. Flask的灵感来自Sinatra。(Sinatra是一个极力避免小题大作的创建web应用的Ruby框架。)
  3. Flask依赖于两个库,一个是Werkzeug(Python的WSGI工具库),一个是Jinja2(一个模板引擎)。
  4. Flask遵循“约定优于配置”以及合理的默认值原则。

我为什么要关心Flask?

我决定学习Flask是因为:

  1. 易于学习: 我已有8年的Java开发经验。因此学完了Python基础之后我想接触web开发。Flask非常易于使用,同时,正如我上面的示例代码所展示的那样,是一个简单得要死的框架。我大脑很自然地就适应它了,使用Flask,我可以更快地开发。
  2. 非常活跃、生机勃勃的社区:我和几个Python的朋友交谈过,每个人都建议我从Flask入手。我也google过,我发现到处都说Flask是最好的现代web开发的Python框架。
  3. 快速创建REST API:我希望学习便于创建REST服务的框架。我们上面展示的例子,可以很容易地改成返回json文档的应用,只需使用Flask的jsonify函数。未来的web应用将架构在REST后端和基于现代JawaScript MV*框架的前端。
  4. 280页优质文档,有很多例子。
  5. Flask遵循“约定优于配置”。也有合理的默认值,比如静态资源放置在static文件夹中。当然,大部分默认值是可覆盖的。

关于《Flask 即时Web开发》

现在让我们来看下这本书的一些细节吧。

  1. 这书属于菜谱类,每节创建一个示例应用。全书仅78页。
  2. 售价 $11。
  3. 作者为Flask提交过补丁。

我喜欢这书的哪些方面?

  1. virtualenv起步,这是python开发的正道。避免污染主python环境。方便不同的项目采用不同版本的python。
  2. 使用最佳实践,比如良好的目录结构之类的。虽然Flask是一个微框架,但是我们仍然应该为应用设定良好的层次。开发企业应用的时候这很有帮助。
  3. 介绍了一些我没听说过的Flask功能和扩展。 比如介绍了Flask-Script扩展。Flask-Script支持为Flask应用编写外部的脚本。
  4. 详细解释了WTForms。WTForms有助于编写基于表单的应用。

哪些可以更好?

  1. 对于初学者而言,一些主题不够清晰,相关知识也讲得不够。我就看不明白为什么要在Flask应用中使用子域名。
  2. 缺乏Postgresql和Mysql之类真实数据库的内容。虽然作者提到了使用不同的数据库uri来连接Postgresql和Mysql,但没有给出真实的例子。我更喜欢使用一个真实数据库的例子,而不是把数据库放在内存里。当然,把数据库放在内存里对初学者来说更容易。
  3. 没有提到REST服务:对于今时今日的应用而言,REST不可缺少。使用Flask的一大优势就是我们可以利用它很方便地编写REST服务。
  4. 没有提到如何配合Flask使用MongoDB之类的NoSQL数据库。
  5. Flask框架的单元测试支持相当完善,但是作者没有介绍。
  6. 没有提到云部署。在本文中,我将展示如何把书中提到的示例程序部署到OpenShift上。

我该买这本书么?

那些想编写传统的基于RDBMS的web应用的Flask初学者会发现这本书很有用。

Flask起步

开始使用Flask前我们需要安装Pythonvirtualenv。本文中使用的Python版本是2.7。

安装flask:

$ mkdir schedulingapp
$ cd schedulingapp/
$ virtualenv venv --python=python2.7
$ . venv/bin/activate
$ pip install flask

在上面的命令中,我们首先创建了一个为示例应用准备的目录,然后激活了virtualenv。virtualenv有助于避免污染python主环境。这意味着不同的项目可以使用不同的python版本。最后,我们安装了flask。pip install flask会安装最新的flask框架稳定版。

部署示例应用到OpenShift

书中的示例程序是一个简单的预约应用。注册账户后,可以登录应用创建、修改、查看预约。使用如下命令可以在本地运行应用:

$ git clone https://github.com/shekhargulati/instant-flask-web-development-book-app.git scheduleapp
$ cd scheduleapp
$ virtualenv venv --python=python2.7
$ . venv/bin/activate
$ pip install -r requirements.txt
$ python manage.py create_tables
$ python manage.py runserver

然后就可以在 http://127.0.0.1:5000 访问应用了。用户可以注册账号,开始使用应用了。

很不错。但是我打算把我的应用部署到云端。我们将在OpenShift上部署应用。OpenShift是一个开源、公开、可伸缩的PaaS(平台即服务)。

依赖

在构建应用之前,我们需要做些设置:

  1. 注册一个OpenShift账号。注册是完全免费的,Red Hat给每个用户三枚免费的Gear,可以用Gear运行你的应用。在写作此文的时候,每个用户能免费使用总共 1.5 GB 内存和 3 GB 硬盘空间。
  2. 安装 rhc客户端工具rhc是ruby gem,因此你的机子上需要装有 ruby 1.8.7以上版本。 只需输入 sudo gem install rhc即可安装 rhc 。如果你已经安装过了,确保是最新版。运行sudo gem update rhc即可升级。关于配置rhc命令行工具的详细信息,请参考: https://openshift.redhat.com/community/developers/rhc-client-tools-install
  3. 使用 rhc 的 setup 命令配置你的 OpenShift 账号。这个命令会帮助你创建一个命名空间,同时将你的ssh公钥上传至 OpenShift 服务器。

部署应用

输入如下命令即可将应用部署到 OpenShift:

rhc create-app schedapp python-2.7 postgresql-9.2 --from-code=https://github.com/shekhargulati/schedapp-openshift.git

这个命令将创建应用,设置公开的DNS,创建私有git仓库,最后利用你的Github仓库中的代码来部署应用。应用可以通过 http://schedapp-shekhargulati.rhcloud.com/ 访问。

今天就到这里了,欢迎反馈意见。

Flask —— 使用Python和OpenShift进行即时Web开发

时间: 2024-10-06 23:33:25

Flask —— 使用Python和OpenShift进行即时Web开发的相关文章

flask web开发笔记 -- 简介

Flask是使用Python编写的轻量级Web应用框架.它基于Werkzeug WSGI工具包和Jinja2 模板引擎. Flask使用BSD授权. Flask基于Python的灵活,为Web开发提供简单的模板.demo:Flask community Flask也被称为微框架,因为它核心简单但扩展性好.Flask没有数据库层.表单验证等第三方已经存在的通用功能.Flask的扩展可以像flask自己实现一样使用这些功能.扩展有ORM(object-relational mappers,对象关系映

《Python Web开发与接口测试》

为什么学习本书: 是否想学习Python web开发而找不到很好的入门教程. 是否很想知道当你点击一个按钮后,程序到底经过哪些过程把你想要的页面展现在你面前. 是否想告诉别人,不就是开发嘛,我也会. 是否想知道接口到底是什么,它是如何被开发出来的,我们又如何对它进行测试? 为什么是Django? 我们总是很难去决定一件事情.比如,我到底该学Java 呢还是C# 呢? 到底测试的工资高还是开发的高?我学习了Python之后,想学习web开发,是Django 还是Flask 好学.强大和灵活? 搞J

从事web开发,选择学习PHP还是Python呢?

PHP和Python,想要从事web开发该选择哪个呢?我想很多人都出现过这样的疑问吧,今天小编为大家简单的介绍一下. 从目前互联网发展趋势来说,当前掌握Python语言的发展空间更大一些,发展前景更好,对比PHP来说,Python可以做的事情更多. Python除了可以从事web开发之外,还可以从事大数据开发.人工智能.系统运维等领域,而且热度处于持续上升的阶段中. 如果单纯从web开发方面你来说,很多人可能会重点关注PHP语言,因为PHP语言在开发领域有着非常不错的作用,尤其是很多中小型web

Flask --- Python的另一个轻量级Web框架

Flask是Python中的另一个轻量级Web框架, 在github上有接近15000的star. github地址为Flask 其用法跟Bottle非常类似, 有兴趣可以参考Bottle-Python的轻量级http server. # -*- coding: utf-8 -*- #!/usr/bin/python from flask import Flask, jsonify app = Flask(__name__) @app.route('/') def index(): return

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应用开发实践》一字一句上机实践(下)

目录 前言 第8章 用户认证 第9章 用户角色 第10章 用户资料 第11章 博客文章 第12章 关注者 第13章 用户评论 第14章 应用编程接口   前言 第1章-第7章学习实践记录请参见:<Flask Web开发——基于Python的Web应用开发实践>一字一句上机实践(上) 本文记录自己学习<Flask Web开发——基于Python的Web应用开发实践>的第8章-第14章内容.相比于刚开始学习第1-7章内容来说,本部分内容实战性更强,而且在书本上遇到的问题也相对较少,如果

《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