Flask新建应用

Flask应用是一个Flask 类的实例。所有关于应用的内容,例如配置与URL,都会随着类一起注册。

创建Flask应用最简单的办法,就是在代码最顶层创建一个全局Flask实例。但是随着代码量的增加,这种方法会引发很多棘手的问题。

在函数内部创建Flask实例是个比较好的方法,这个函数被称为应用工厂,所有的配置、注册以及其他构件过程都在这个函数里进行,最后返回应用。

应用工厂

创建flaskr目录并加入一个__init__.py文件。这个文件提供这些功能:包含应用工厂,并且告诉python解释器,flaskr目录是一个应用包。

mkdir flaskr

flaskr/__init__.py

import os

from flask import Flask


def create_app(test_config=None):
    # create and configure the app
    app = Flask(__name__, instance_relative_config=True)
    app.config.from_mapping(
        SECRET_KEY='dev',
        DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'),
    )

    if test_config is None:
        # load the instance config, if it exists, when not testing
        app.config.from_pyfile('config.py', silent=True)
    else:
        # load the test config if passed in
        app.config.from_mapping(test_config)

    # ensure the instance folder exists
    try:
        os.makedirs(app.instance_path)
    except OSError:
        pass

    # a simple page that says hello
    @app.route('/hello')
    def hello():
        return 'Hello, World!'

    return app

create_app就是一个应用工程函数,分析一下它做了什么:

  1. app = Flask(__name__, instance_relative_config=True)

    创建了Flask实例

    • __name__ 为当前python模块名,app需要知道自己开始的路径,而__name__做这件事更简便一些。
    • instance_relative_config=True实例文件夹位于flaskr包之外,保存一些不能上传到版本控制的本地数据,例如配置密码以及数据库文件。这个配置告诉app读取与实例文件夹相关的配置文件
  2. app.config.from_mapping()

    设置了默认配置

    • SECRET_KEY Flask及其扩展用来保证数据安全的配置。这里使用简单的‘dev’,实际环境中应该使用强随机字符
    • DATABASE 存储sqlite文件所在的位置,这里是位于app.instance_path目录下,也就是实例文件夹下
  3. app.config.from_pyfile() 如果配置文件config.py存在,则会覆盖默认配置,例如可以用来配置一个强壮的SECRET

    • test_config 也可以传给工厂,会被用来替换实例的配置
  4. os.makedirs() 确认app.instance_path是否存在,因为Flask本身是不会自动建立文件夹的,但实际上需要这个目录来存放sqlite 数据库文件

运行应用

以开发模式运行:

linux or mac

export FLASK_APP=flaskr
export FLASK_ENV=development
flask run

Windows cmd

set FLASK_APP=flaskr
set FLASK_ENV=development
flask run

Windows PowerShell

$env:FLASK_APP = "flaskr"
$env:FLASK_ENV = "development"
flask run

配置无误的话会显示如下信息:

* Serving Flask app "flaskr"
* Environment: development
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 855-212-761
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值