步骤2:应用设置代码

现在已经有了数据库模式,你可以创建应用的模块,flaskr.py这个文件应该放置在flaskr/flaskr文件夹下。这个应用模块的代码开始几行是必需的import语句。之后是几行配置代码。对于小型的应用如flaskr,可以直接将配置丢在模块里面。然而,更干净的做法是创建一个单独的.ini.py文件,加载它,并从那里导入值。

下面是import语句(位于flaskr.py中):

# all the imports
import os
import sqlite3
from flask import Flask, request, session, g, redirect, url_for, abort, \
     render_template, flash

接下来的几行将创建真实的应用实例,并用来自同一个文件flaskr.py中的配置初始化它:

app = Flask(__name__) # create the application instance :)
app.config.from_object(__name__) # load config from this file , flaskr.py

# Load default config and override config from an environment variable
app.config.update(dict(
    DATABASE=os.path.join(app.root_path, 'flaskr.db'),
    SECRET_KEY='development key',
    USERNAME='admin',
    PASSWORD='default'
))
app.config.from_envvar('FLASKR_SETTINGS', silent=True)

Config 对象的用法如同字典,所以我们可以用新值更新 它。

数据库路径

操作系统有进程当前工作目录的概念。 不幸的是,你在 Web 应用中不能 依赖此概念,因为你可能会在相同的进程中运行多个应用。

为此,提供了 app.root_path 属性以获取应用的路径。 配合 os.path 模块使用,轻松可达任意文件。 在本例中,我们把数据库 放在根目录下。

对于实际生产环境的应用,推荐使用 实例文件夹

通常,加载一个单独的、环境特定的配置文件是个好主意。 Flask 允许你导 入多份配置,并且使用最后的导入中定义的设置。 这使得配置设定过程更可 靠。 from_envvar() 可用于达此目的。

app.config.from_envvar('FLASKR_SETTINGS', silent=True)

只需设置一个名为 FLASKR_SETTINGS 的环境变量,指向要加载的 配置文件。 启用静默模式告诉 Flask 在没有设置该环境变量的情况下噤声。

此外,你可以使用配置对象上的 from_object() 方 法,并传递一个模块的导入名作为参数。 Flask 会从这个模块初始化变量。 注意,只有名称全为大写字母的变量才会被采用。

SECRET_KEY是保证客户端会话的安全的要点。 正确选择一个尽可能难猜 测、尽可能复杂的密钥。

最好,你要添加了一个让连接到指定数据库变得很简单的方法。这个方法用于在请求时开启一个数据库连接,并且在交互式Python shell和脚本中也能使用。这为以后的操作提供了相当的便利。你可以创建一个简单的SQLite数据库的连接,并让它用sqlite3.Row对象表示数据库中的行。这使得我们可以通过字典而不是元组的形式访问行。

def connect_db():
    """Connects to the specific database."""
    rv = sqlite3.connect(app.config['DATABASE'])
    rv.row_factory = sqlite3.Row
    return rv

在下一节,你将看到如何运行这个应用。

请继续步骤3:安装flaskr为一个包