从 Flask-Script 迁移到 Flask-CLI

一、Flask-Script 已经消亡!

曾几何时 Flask-Script 一直都是配合 Flask 应用的利器,你可以在命令行启动项目,还可以配合 Flask-Migrate 做数据迁移,这两个工具一度成为 Flask 项目的必备选项:Flask 组件 ScriptFlask 组件 Migrate

Flask0.11 开始就内置了 CLI 工具,所有连 Flask-Script 作者都觉得 Flask-Script 没必要在维护下去了。 GitHub 上也已经归档了:https://github.com/smurfix/flask-script,而且明确告诉我们选择 Flask 官方的内置 CLI 工具。

从 Flask-Script 迁移到 Flask-CLI
作者对于 Click 引入 Flask 的意见:

回到2014年,当ArminRonacher向我介绍将Click整合进flask,我是(现在也是)拒绝的,这给Flask内核项目添加了别的依赖,我建议基于click实现命令行支持作为flask的拓展,与flask-script进行公平的竞争。你可以查看该讨论在GitHub的issue中https://github.com/smurfix/flask-script/issues/97。因此我确信,强制命令行工具基于Click是个错误,并且违反了flask的基本准则将最优秀的工具用于每一项任务。而且不幸的是,click成为flask核心的一部分使flask-script的维护者离开了,而且从github的repository来看,这个项目似乎正在缓慢死亡。

; 二、Flask-Migrate 何去何从?

Flask-ScriptFlask-Migrate 一直在紧密配合,但是随着 Flask-Script 的消亡, Flask-Migrate 又该何去何从呢?

从 Flask-Script 迁移到 Flask-CLI
当你把项目中 Flask-Migrate 升级到最新版时就会发现, Flask-Migrate 竟然没有 MigrateCommand 这个对象了。

其实也好理解,代码中的最后一行 MigrateCommand 是要放到 manager.add_command() 里边的, Flask-Script都没了 MigrateCommand 也没必要存在了,所以 Flask-Migrate 的作者就删除了这个对象。

参考文档:

三、Flask-CLI 闪亮登场!

Flask0.11 开始就内置了 CLI 工具,当安装了 Flask 命令行就默认可以使用 flask 命令了:

从 Flask-Script 迁移到 Flask-CLI
我们需要在代码中将 Flask-Script 装饰器:
从 Flask-Script 迁移到 Flask-CLI
改成 Flask-CLI 装饰器:
从 Flask-Script 迁移到 Flask-CLI
最后在使用 flask 命令之前先设置 FLASK_APP
$ export FLASK_APP=main.py
$ flask
Usage: flask [OPTIONS] COMMAND [ARGS]...

  A general utility script for Flask applications.

  Provides commands from Flask, extensions, and the application. Loads the
  application defined in the FLASK_APP environment variable, or from a
  wsgi.py file. Setting the FLASK_ENV environment variable to 'development'
  will enable debug mode.

    $ export FLASK_APP=hello.py
    $ export FLASK_ENV=development
    $ flask run

Options:
  --version  Show the flask version
  --help     Show this message and exit.

Commands:
  create  Create all database.

  db      Perform database migrations.

  routes  Show the routes for the app.

  run     Run a development server.

  shell   Run a shell in the app context.

  test    Run service unittest.

这样我们就把我们自定义的命令加到 Flask-CLI 中了。

但是这样每次都需要手动设置 FLASK_APP,为了解决这个问题需要安装 python-dotenv 包:

pip install python-dotenv

然后在项目根目录下创建一个名为 .flaskenv 的文件,将此内容放入其中:

FLASK_ENV=dev
FLASK_APP=main.py

以上就是 Flask-CLI 最核心的用法了,想查看更多的使用方法请参考 Flask 官方文档:https://flask.palletsprojects.com/en/2.0.x/cli/

参考文章:https://www.cnblogs.com/lynsyklate/p/7693169.html

Original: https://blog.csdn.net/yilovexing/article/details/122348164
Author: 极客点儿
Title: 从 Flask-Script 迁移到 Flask-CLI

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/748363/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球