Flask学习之一 hello world

本人电脑环境:

系统:linux

python: 2.7.3

 

这里是按照Miguel Grinberg的教程来弄的~为什么有教程了我还要写?因为我想记录一下学习心得啊,连简单的Hello World我也出现了点问题,就把问题记录下来了。

英文渣的我是选择网上的中文翻译,以下是几个地址:

博客园的:http://www.cnblogs.com/ubunoon/archive/2013/01/17/2864224.html

开源中国社区的:http://www.oschina.net/translate/the-flask-mega-tutorial-part-i-hello-world

第三个:http://www.pythondoc.com/flask-mega-tutorial/index.html

另外的参考:

欢迎来到flask的世界:http://dormousehole.readthedocs.org/en/latest/

 

一、安装flask

当然python2.7是要有的,ubuntu下python好像是自带的,不是自带也没关系,反正linux使用包安装管理器安装起来很方便。

说最好安装一个虚拟环境,好处是你自已主要的Python安装环境则不会受影响,以及,用这种方式来安装时不需要root管理员权限。

教程里说直接下载 virtualenv.py 就好,但事实上我只下载这个文件没有成功安装好虚拟环境。

先到 https://pypi.python.org/pypi/virtualenv 这里下载最新的virtualenv版本,下载下来是一个文件夹,解压之后把所有东西放到你新建的那个文件夹(我用的文件夹名字就是教程里面的microblog,这个文件夹就是我们应用的最上层文件夹)里面,再执行

python virtualenv.py flask

 这样就在flask目录里面创建一个完整的Python环境。

 

接下来就按照使用以下命令安装 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

 

 多数人应该是直接就成功了,但是我在过程中出现过类似如下错误:

致命错误: Python.h:没有那个文件或目录
编译中断。

error: Setup script exited with error: command 'gcc' failed with exit status 1 

解决方法是安装python-dev,这是Python的头文件和静态库包:

sudo apt-get install python-dev 

 

根据教程里面的说法:

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

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

 

然后安装成功之后,就可以把除了flask文件夹之外的东西删除了,当然不删也没有关系。

 

 

二、通过Flask创建 "Hello, World"

首先来到你刚才创建的microblog文件夹,创建我们应用的文件结构

mkdir app
mkdir app/static mkdir app/templates
mkdir tmp

我们的应用程序包是放置于 app 文件夹中。

子文件夹 static 是我们存放静态文件像图片,JS文件以及样式文件。

子文件夹 templates 显然是存放模板文件。

 

让我们开始为app包创建一个简单的脚本(文件 app/__init__.py):

from flask import Flask

app = Flask(__name__)
from app import views

注意这个__init__.py是放在app文件夹下面的。

上面的脚本简单地创建应用对象,接着导入视图模块,该模块我们暂未编写。

视图是响应来自网页浏览器的请求的处理器。在 Flask 中,视图是编写成 Python 函数。每一个视图函数是映射到一个或多个请求的 URL。

 

接下来是第一个视图函数(文件 app/views.py ):

from app import app

@app.route('/')
@app.route('/index')
def index():
    return "Hello, World!"

注意这个文件也是放到app文件夹下面的。

这个视图是非常简单,它只是返回一个字符串,在客户端的网页浏览器上显示。两个 route 装饰器创建了从网址 / 以及 /index 到这个函数的映射。

 route() 装饰器用于把一个函数绑定到一个 URL。

上面这句话的意思是 你访问 http://127.0.0.1:5000/index 或者http://127.0.0.1:5000 浏览器显示出来的内容是一样的。显然我们这里能看到的就是 Hello, World! 这样的字符串。

 

教程说:能够完整工作的 Web 应用程序的最后一步是创建一个脚本,启动我们的应用程序的开发 Web 服务器。让我们称这个脚本为 run.py,并把它置于根目录

就是说 run.py 这个文件要放到microblog文件夹下,代码如下:

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

教程说这个脚本简单地从我们的 app 包中导入 app 变量并且调用它的 run 方法来启动服务器。请记住 app 变量中含有我们在之前创建的 Flask 实例。

完成上面的步骤后ls的结果如下:

注意.pyc文件是我执行python后出现的文件

接下来就需要执行这个脚本:

chmod a+x run.py
./run.py

 执行后终端会出现:

 在服务器初始化后,它将会监听 5000 端口等待着连接。现在打开你的网页浏览器输入以下两个URL的任意一个:

http://localhost:5000
http://localhost:5000/index

打开浏览器之后你可能会在终端看到:

你可以通过 Ctrl-C 来终止服务器

 

三、关于调试

如果你 打开调试模式,那么服务器会在修改应用之后自动重启,并且当应用出错时还会提供一个 有用的调试器。

app.run(debug=True)

另一种是作为参数传递给 run 方法,这样在修改应用后就不用重启服务器。

 

 

 

posted @ 2015-01-30 13:25  AminHuang  Views(1384)  Comments(0Edit  收藏  举报