flask

flaskr 开发笔记

Python 虚拟环境使用

虚拟环境很好使,推荐使用,他不会影响你的Ubuntu自带的Python环境,相当于重新创建了一个Python环境,然后在这个环境下进行包的安装和开发!以下是简单的安装和使用方法

// 可能没得virtaualenv,先安装
sudo apt-get install python-pip python-dev python-virtualenv
// 然后新建一个目录,比如你的项目
mkdir todo-api
cd todo-api
// 该句会创建一个flask目录,就是一个新的Python虚拟环境,里面的目录结构其实和主机上Python目录结构很类似,都有bin目录下的命令,比如pip,python,activate等
virtualenv flask
//然后你可以使用flask/bin/pip安装项目需要的依赖包,此时安装的就是Flask包了,他在flask/lib/python2.7/site-packages目录下面,不会影响local Python的。
flask/bin/pip install flask
//如果你想要运行.py文件,可以直接使用
flask/bin/python app.py
//当然还可以使用
chmod a+x app.py
./app.py

web app 配置方式

Flask allows you to import multiple configurations and it will use the setting defined in the last import.
从文件导入配置

app.config.from_pyfile(filename, silent=False)

从对象导入配置

app.config.from_object(obj)
    obj: string, 叫这个名字的模块会被import,也可以是一个直接已经导入的object

从环境变量指定的地方导入

app.config.from_envvar(variable_name, silent=False)

从一个词典导入,运行时更新

app.config.update(dict)

flask 引入上下文的概念

为了保证同一个请求共享数据库连接,而不是反复connect_db(),flask引入applocation context的概念,g 是全局共享的

def get_db():
    """Opens a new database connection if there is none yet for the
    current application context.
    """
    if not hasattr(g, 'sqlite_db'):
        g.sqlite_db = connect_db()
    return g.sqlite_db

flask 提供命令行接口,并可以读取APP资源

def init_db():
    db = get_db()
    with app.open_resource('schema.sql', mode='r') as f:
        db.cursor().executescript(f.read())
    db.commit()
# flask的命令行接口创建数据库
@app.cli.command('initdb')
def initdb_command():
    init_db()
    print 'Initialized the database.'