这是我用Python的轻量级框架 Flask 编写web程序时的一些经验,我将它记录在此,本篇是一系列文章中的第一篇。
下面是这个系列中已经发布的文章的目录:
我是个用多种语言开发复杂程序有超过10+年经验的码农,一开始我工作时学习Python来写C++库的Python接口。
除了Python,我还用PHP, Ruby, Smalltalk来写Web app,不管你信不信,我还用C++写web app,反正我是信了。所有这些东西中,我觉得Python+Flask是最灵活的.
作为这个教程的一部分,我即将要开发一个专门用于发送微博服务的应用,我叫它微博(无聊的名字),相当给力,我当然知道,哈!
我在开发这个应用的过程中会涉及到如下几个话题:
正如你所看到的,整个过程我将花费不少精力。我希望这个应用,当它开发完成后,将作为一种编写其它web应用的模板。
废话少说,开始吧!
如果你还没准备好,去安装Python 2.7吧。
现在我们必须要安装Flask和服务端扩展,这些都是我们即将要用到的。我偏爱的方式是创建一个虚拟环境,所有东西都已经安装在这个虚拟环境中了,因此你自已主要的Python安装环境则不会受影响。附加的一个好处是,用这种方式来安装时不需要root管理员权限。
好了,打开终端窗口,选择一个位置用来落脚我们的应用,并且在此创建一个新目录,这个目录就叫作microblog。
下一步,下载virtualenv.py,并且把它放进这个新目录。
敲下以下命令行,用来创建一个虚拟环境:
python virtualenv.py flask上面的命令在flask目录里面创建一个完整的Python环境。
虚拟环境可以是激活的,也可以是失效的。如果你希望的话,可以将 flask 的 bin 目录路径加到系统环境变量 path 的后面。这样就使虚拟环境为激活的,当你在终端输入 python 命令时,你将看到的是环境的版本信息而不是 python 的版本信息。我个人不喜欢这种特性,所以我从来不激活我的环境参数,就只是写它的完整路径来进行调用。
如果你的环境是 Linux,OS X or Cygwin,使用以下命令安装 flask 和 扩张包,按顺序一个接一个:
flask/bin/pip install flask flask/bin/pip install flask-login flask/bin/pip install flask-openid flask/bin/pip install flask-mail flask/bin/pip install flask-sqlalchemy flask/bin/pip install sqlalchemy-migrate flask/bin/pip install flask-whooshalchemy flask/bin/pip install flask-wtf flask/bin/pip install flask-babel flask/bin/pip install flup
如果你的是 Windows 环境,那么命令有点不同:
flask\Scripts\pip install flask flask\Scripts\pip install flask-login flask\Scripts\pip install flask-openid flask\Scripts\pip install flask-sqlalchemy flask\Scripts\pip install sqlalchemy-migrate flask\Scripts\pip install flask-whooshalchemy flask\Scripts\pip install flask-wtf flask\Scripts\pip install flask-babel flask\Scripts\pip install flup
这些命令会下载和安装我们应用中所需要的包。
关于SQLAlchemy,需要注意:SQLAlchemy v0.8 并不兼容之前的一些版本。尤其是sqlalchemy-migrate模块无法和v0.8一起使用。所以我们需要强制安装v0.7.9,命令如下:
flask/bin/pip uninstall sqlalchemy flask/bin/pip install sqlalchemy==0.7.9
等sqlalchemy-migrate更新到支持SQLAlchemy v0.8的时候再使用吧。
Windows用户需要多一个步骤。如果你善于观察,你会注意到上一段中的windows环境包安装命令并没安装flask-mail包,因为它在windows上安装时默认会附带一些其他包,所以我们使用另一个命令来解决:
flask\Scripts\pip install --no-deps lamson chardet flask-mail关于这个问题,我不会进入细节,如果你想要了解更多,请参考flask-mail的官方文档。
如果你成功安装完了所有包,那你可以删除virtualenv.py了(译者注:这个是作者的个人喜好,可以不用删),因为我们不再需要它了。
现在在你的微博文件夹下有一个flask字文件夹,它被加入了一段Python注释,而且我们将在App应用中使用Flask框架和它的扩展。现在让我们来写我们的第一个web应用吧。
在你通过cd命令行进到微博文件夹下后,让我们来创建我们应用的文件结构:
mkdir app mkdir app/static mkdir app/templates mkdir tmp
我们将把应用的包存放在这个app文件夹下。这个静态子文件件夹我们用来放诸如图片、JS或者CSS之类的文件,而template子文件夹则明显用于存放template文件的。
下面让我们来写第一个视图功能(app/views.py):
from app import app @app.route('/') @app.route('/index') def index
这个视图非常的简单,它仅仅就是返回一个string语句,先后显示在用户的web浏览器上。功能上的两条路径连接这从urls/and/index到这个功能的映射。
下面,使web应用能完全运行的最后一步就是创建一个能启动我们开发的这个应用web服务器的脚本。我们叫它scriptrun.py。
#!flask/bin/python from app import app app.run(debug = True)
这段脚本只是从我们的app包中导入了app的变量,然后调用它的方法来启动服务器。记住,这个变量保存着我们上面创建的Flask实例。
评论删除后,数据将无法恢复
评论(39)
http://my.oschina.net/u/2275217/blog/522474
出现一大堆红色错误,最后一句提示是:flask\Scripts\pip install sqlalchemy-migrate
请问该什么解决