首页 > 代码库 > Python Flask 在Sina App Engine (SAE)上安家

Python Flask 在Sina App Engine (SAE)上安家

早就听说了Python的大名,随着的编程语言的理解加深,越发觉得动态语言的威力--真大呀。

趁这段时间不忙,我也用Python写了一个应用,并且将其部署到Sina App Engine (SAE)。SAE确实是一个好地方,它支持Python,对于开发者,其使用费用几乎为0。

更重要的是,如果我的这个app不会半路夭折,等它长大后,这个平台也能给予足够的支持。


虽然,整个过程都很简单,但是对于一个新手,特别是从传统C#, Asp.net, IIS阵营过来的开发人员来说,什么都是第一次接触。希望我的这篇文章能够成为你Python学习道路上的一盏小灯。


大纲

  • Python安装
  • Pip安装
  • Flask安装
  • 创建一个带页面的Flask Web App
  • 部署到SAE上

Python安装

Python目前有两个主要版本,2.7.x和3.x。但目前Flask对Python 3.x的支持还有些问题待解决,因此推荐使用Python 2.x。

你可以打开以下链接下载Python 2.7.8

https://www.python.org/download/releases/2.7.8/

Python Installation

更多

如果你已经安装了Python 3.x,也没有必要将其卸载掉。你只需要在Python 2.7.x安装完成后,修改系统的环境变量,将Path里的Python 3.x的目录替换为Python 2.7.x的目录。这样做的目的是在命令行模式下,直接调用Python 2.7。


Pip安装

Pip是Python世界中用于安装的工具。很多框架都支持Pip的安装,Flask也不例外。

你可以打开以下链接下载get-pip.py。

https://bootstrap.pypa.io/get-pip.py

建议将get-pip.py保存在Python的根目录下。

用管理员权限启动command窗体

运行

python get-pip.py --allow-external install

Pip Installation

安装完成后,它会在Python的安装根目录创建Scripts目录。

Pip Installation Complete


建议将Scripts目录页添加到系统环境变量Path中,这样方便下面的安装过程中直接在command窗口里输入命令。

(注意:修改了系统环境变量Path后,最好注销一次,否则系统可能暂时找不到你输入的命令)


Flask安装

打开command窗体,运行pip install Flask,即完成了Flask的安装。现在体会到了Pip的强大了吧。

Flask Installation 1

由于整个安装过程要从网上下载,所以以下界面可能要持续一段时间,如果你的网速不快,还得耐心等待。

Flask installation 2

更多

有的时候,由于网络原因,可能导致安装失败。如果遇到失败的情况,多试几次。


创建一个带页面的Flask Web App

在这一节中,会应用到Flask的route功能和JinJia2的Template功能。

route功能就是将请求的url映射到对应的处理方法上,这同Asp.net MVC中的route是同一个概念。

JinJia2的Template功能正如其名称所指,是一个强大的html模板,可以将其类比为Asp.net MVC中的cshtml。

详细内容,请参考以下链接:

http://flask.pocoo.org/docs/quickstart/#a-minimal-application

http://jinja.pocoo.org/docs/templates/

创建目录c::\MyWebApp。

创建c:\MyWebApp\myApp.py。

myApp.py

from flask import Flask, render_template

app = Flask(__name__)
app.debug = True

@app.route('/')
def index():
	return render_template('index.html')

	
if __name__ == '__main__':
        app.run()

在上面的代码中,为index方法添加了@app.route(‘/‘)属性,即当访问站点根目录时,会调用index函数。

@app.route('/')
def index():

index函数返回render_template(‘index.html‘)的结果。这里index.html作为模板页返回给了客户端。

    return render_template('index.html')


创建目录c:\MyWebApp\templates\。

创建c:\MyWebApp\templates\index.html。

创建c:\MyWebApp\static\。

将jquery-1.9.1.min.js存放在static目录下。

我这里没有应用Jinjia2的模板特性,只是一个非常普通的html代码。

index.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <script src=http://www.mamicode.com/"/static/jquery-1.9.1.min.js"></script>>


注意,index.html存放在templates目录下, 在index.html中,引用的jquery存放在static目录下。

在Flask中,templates目录用于放模板,static目录用于放静态资源,如css, js, 图标等文件。


运行

用Python IDE打开myApp.py,按F5,站点就跑起来了,很方便吧。

Flask run local

然后打开浏览器,输入站点地址,例如上面的http://127.0.0.1:5000/,就可以看到Python的Flask框架为我们返回的网页了。

Flask run in browser

部署到SAE上

如果你有新浪微博,可以通过微博号直接登陆。

http://sae.sina.com.cn/

在‘我的应用‘上点击‘创建新应用‘

SAE Create

输入二级域名。

选择Python作为开发语言。

创建完成后,通过SVN上传代码。

例如,你的二级域名为myApp,那么SVN的地址为 https://svn.sinaapp.com/myApp。

别慌,这里有坑!

官方有详细文档,我这里需要补充的是:SAE本身允许最多10个应用版本,每一个版本对应于SVN根目录下的目录,目录的名称从1到10,我们这里这些目录称为应用目录。另外,SVN根目录下除了包含应用目录外,不应该包含其它东西。这个设计对于同时发布多个产品分支来说,太给力了。

因此,如果当前应用是你的第一个版本,操作步骤如下:

  • 在本地创建一个目录,执行SVN的Check Out。
  • 在那个目录下创建名称为1的目录,这个目录就是应用目录
  • 将之前的代码都拷贝到这个为1的目录下。
  • 执行SVN的Add和Commit操作。

然后,进入SAE的代码管理,你就会发现类似于下面的应用版本列表。

SAE Code Management

官方文档链接

http://sae.sina.com.cn/doc/tutorial/code-deploy.html

将本地文件上传到SAE的应用目录下后,还需要在应用目录的根目录下创建一个index.wsgi文件,这个文件是SAE上应用的入口,其代码如下:

index.wsgi

import sae
from myapp import app

application = sae.create_wsgi_app(app)

现在,大功告成,马上就可以访问你的站点了。

以二级域名为myApp为例,如果你要访问当前的默认应用目录,访问地址为:

http://myApp.sinaapp.com

如果你要访问某一个应用目录,例如,第二个应用目录,访问地址为:

http://2.myApp.sinaapp.com


希望以后能够在Python的学习道路上多交流。如果能够推荐一下Python的工作机会,将不胜感激。