应用

作为这个教程的一部分,我即将要开发一个专门用于发送微博服务的应用,我叫它微博(无聊的名字),相当给力,我当然知道,哈!

我在开发这个应用的过程中会涉及到如下几个话题:

  • 用户管理,包括登录管理,会话,用户角色,个人档案及用户头像。

  • 数据库管理,包括数据库迁移处理。

  • Web表单支持,包括字段检验和用于防止垃圾邮件的验证码功能。

  • 大数据的分页功能。

  • 全文检索。

  • 用户邮件通知。

  • HTML和RSS模板。

  • 多语言支持。

  • 缓存和其它性能优化。

  • 用于开发和生产环境服务器上的调试技术。

  • 生产环境服务器上的部署安装。

正如你所看到的,整个过程我将花费不少精力。我希望这个应用,当它开发完成后,将作为一种编写其它web应用的模板。

要求

如果你拥有一台运行着Python 2.6或者2.7的电脑那么你可以很好的进行下去。这个教程应用应该可以刚刚好地运行在Windows,OS X和Linux上。

教程假设你熟练终端窗口(对于Windows用户就是命令行提示CMD)以及了解你的操作系统上基本的命令行文件管理函数。如果不是这样,在继续我们的教程之前,那么我推荐你去学一下怎么创建目录,复制文件等操作,要利用命令得哦,亲!

最后,你应该对于编写Python代码有点感觉,不要太菜。对于Python模块和包这一块要熟悉是必须的。


安装Flask

废话少说,开始吧!

如果你还没准备好,去安装Python 2.7吧。

现在我们必须要安装Flask和服务端扩展,这些都是我们即将要用到的。我偏爱的方式是创建一个虚拟环境,所有东西都已经安装在这个虚拟环境中了,因此你自已主要的Python安装环境则不会受影响。附加的一个好处是,用这种方式来安装时不需要root管理员权限。

好了,打开终端窗口,选择一个位置用来落脚我们的应用,并且在此创建一个新目录,这个目录就叫作microblog。

下一步,下载virtualenv.py,并且把它放进这个新目录。

敲下以下命令行,用来创建一个虚拟环境:

1python virtualenv.py flask

上面的命令在flask目录里面创建一个完整的Python环境。

虚拟环境可以是激活的,也可以是失效的。如果你希望的话,可以将 flask 的 bin 目录路径加到系统环境变量 path 的后面。这样就使虚拟环境为激活的,当你在终端输入 python 命令时,你将看到的是环境的版本信息而不是 python 的版本信息。我个人不喜欢这种特性,所以我从来不激活我的环境参数,就只是写它的完整路径来进行调用。

如果你的环境是 Linux,OS X or Cygwin,使用以下命令安装 flask 和 扩张包,按顺序一个接一个:

flask / bin / pip install flaskflask / bin / pip install flask - loginflask / bin / pip install flask - openidflask / bin / pip install flask - mailflask / bin / pip install flask - sqlalchemyflask / bin / pip install sqlalchemy - migrateflask / bin / pip install flask - whooshalchemyflask / bin / pip install flask - wtfflask / bin / pip install flask - babelflask / bin / pip install flup

如果你的是 Windows 环境,那么命令有点不同:

flask\Scripts\pip install flaskflask\Scripts\pip install flask - loginflask\Scripts\pip install flask - openidflask\Scripts\pip install flask - sqlalchemyflask\Scripts\pip install sqlalchemy - migrateflask\Scripts\pip install flask - whooshalchemyflask\Scripts\pip install flask - wtfflask\Scripts\pip install flask - babelflask\Scripts\pip install flup

这些命令会下载和安装我们应用中所需要的包。

关于SQLAlchemy,需要注意:SQLAlchemy v0.8 并不兼容之前的一些版本。尤其是sqlalchemy-migrate模块无法和v0.8一起使用。所以我们需要强制安装v0.7.9,命令如下:

1flask/bin/pip uninstall sqlalchemy
2flask/bin/pip install sqlalchemy==0.7.9

等sqlalchemy-migrate更新到支持SQLAlchemy v0.8的时候再使用吧。

Windows用户需要多一个步骤。如果你善于观察,你会注意到上一段中的windows环境包安装命令并没安装flask-mail包,因为它在windows上安装时默认会附带一些其他包,所以我们使用另一个命令来解决:

1flask\Scripts\pip install--no-deps lamson chardet flask-mail

关于这个问题,我不会进入细节,如果你想要了解更多,请参考flask-mail的官方文档。

如果你成功安装完了所有包,那你可以删除virtualenv.py了(译者注:这个是作者的个人喜好,可以不用删),因为我们不再需要它了。

通过Flask创建 "Hello, World"

现在在你的微博文件夹下有一个flask字文件夹,它被加入了一段Python注释,而且我们将在App应用中使用Flask框架和它的扩展。现在让我们来写我们的第一个web应用吧。

在你通过cd命令行进到微博文件夹下后,让我们来创建我们应用的文件结构:

1mkdirapp
2mkdirapp/staticmkdirapp/templates
3mkdirtmp

我们将把应用的包存放在这个app文件夹下。这个静态子文件件夹我们用来放诸如图片、JS或者CSS之类的文件,而template子文件夹则明显用于存放template文件的。

现在让我们来给我们的app包创建一个简单的初始化脚本(app/__init__.py)。

1fromflaskimportFlask app=Flask(__name__)fromappimportviews

上面的这段简单的脚本创建了Flask类的应用对象然后导入我们还没写的views视图模块。

这个模块相当于一个执行者来返回用户的web请求。在Flask中,视图一般会被作为Python写出,每一个视图映射一个或者多个URL

下面让我们来写第一个视图功能(app/views.py):

1fromappimportapp @app.route('/') @app.route('/index')defindex

这个视图非常的简单,它仅仅就是返回一个string语句,先后显示在用户的web浏览器上。功能上的两条路径连接这从urls/and/index到这个功能的映射。

下面,使web应用能完全运行的最后一步就是创建一个能启动我们开发的这个应用web服务器的脚本。我们叫它scriptrun.py。

1#!flask/bin/python from app import app
2app.run(debug=True)

这段脚本只是从我们的app包中导入了app的变量,然后调用它的方法来启动服务器。记住,这个变量保存着我们上面创建的Flask实例。

运行下面这段脚本就可以启动的应用。当在X、Linux或者Cygwin系统上运行时,在运行之前,你必须指明这是一个可执行文件:

1chmod a+x run.py

然后这段脚本会被执行,如下:

1./run.py

当在Windows环境下运行时,进程将会有点不同,你没必要指明这是个可执行文件。然而,你必须把它当作Python注释的自变量来运行它。

1flask/Scripts/python run.py

当服务器初始化之后,它将会监听5000端口,然后等待连接。现在打开你的浏览器然后在地址栏输入下面的地址:

或者你也可以用下面的这个URL:

你看到这个action中的映射路径了吗?第一个URL指向/。然而第二个指向/index。这两个路径都关联到我们的视图,所以呈现的是相同的结果。如果你输入其他路径的话将会报错,因为只有这两个路径被映射到这个视图中。

当你结束服务器操作时你指数要按住Ctrl-C来停止。然后到此我饿结束了这第一个安装指南。

对于那些懒于敲键盘的人。你可以直接从下面指南中下载代码:

Downloadmicroblog-0.1.zip.

注意,在运行应用之前。你仍然需要先安装上文提到的Flask。

下面干嘛?

在这个系列的下一章节,我会修改这个小应用来使用HTML模板。希望你还能继续看我的下一章节。。0