外贸建设网站,无锡装饰网站建设排名,woocommerce做零售网站,成都倒闭的网站建设公司名单✨✨ 欢迎大家来到景天科技苑✨✨
#x1f388;#x1f388; 养成好习惯#xff0c;先赞后看哦~#x1f388;#x1f388; #x1f3c6; 作者简介#xff1a;景天科技苑 #x1f3c6;《头衔》#xff1a;大厂架构师#xff0c;华为云开发者社区专家博主#xff0c;…
✨✨ 欢迎大家来到景天科技苑✨✨ 养成好习惯先赞后看哦~ 作者简介景天科技苑 《头衔》大厂架构师华为云开发者社区专家博主阿里云开发者社区专家博主CSDN新星创作者掘金优秀博主51CTO博客专家等。 《博客》Python全栈前后端开发人工智能js逆向App逆向网络系统安全数据分析Djangofastapiflask等框架linuxshell脚本等实操经验网站搭建面试宝典等分享。 所属的专栏flask框架零基础进阶应用实战教学 景天的主页景天科技苑 文章目录 终端脚本命令flask1.0时代的终端命令使用安装命令自定义终端命令 flask2.0以后版本的终端命令使用使用flask终端命令之前可以配置2个环境变量。查看支持的命令Click自定义终端命令实战案例 总结 终端脚本命令
flask在0.11版本之前都是采用flask-script第三方模块来实现终端脚本命令的执行flask在0.11版本以后不再使用这个模块了因为存在兼容性问题所以内置了Click模块来实现终端脚本命令的执行。
flask1.0时代的终端命令使用
注意python3.9已不再支持flask1的版本如果要运行flask1就需要安装python3.8或以下版本
flask-script模块的作用可以让我们通过终端来控制flask项目的运行类似于django的manage.py
官方文档https://flask-script.readthedocs.io/en/latest/
安装命令
conda create -n py38 python3.8 conda activate py38 pip install -U flask1.1.4 pip install -U flask-script -i https://pypi.douban.com/simple
集成 Flask-Script到flask应用中创建一个主应用程序一般我们叫manage.py/run.py/main.py都行。
manage.py代码
from flask import Flas app Flask(__name__)使用flask_script启动项目
from flask_script import Manager
manage Manager(app)app.route(/)
def index():return hello worldif __name__ __main__:manager.run()启动终端脚本的命令
# 端口和域名不写默认为127.0.0.1:5000
python manage.py runserver# 通过-h设置启动域名-p设置启动端口 -d
python manage.py runserver -h0.0.0.0 -p8888 # 关闭debug模式
python manage.py runserver -h0.0.0.0 -p8888 -d # 开启debug模式# 进入flask交互终端在这个终端下可以直接调用flask代码进行测试。
python manage.py shell安装flask1.1.4版本启动项目时如果出现错误如下 from markupsafe import soft_unicode
则找到报错代码位置修改如下 from markupsafe import soft_str as soft_unicode
自定义终端命令
Flask-Script 还可以为当前应用程序添加脚本命令
引入Command命令基类 from flask_script import Command创建命令类必须直接或间接继承Command并在内部实现run方法或者__call__()方法 同时如果有自定义的其他参数则必须实现get_options方法或者option_list属性来接收参数使用flask_script应用对象manage.add_command对命令类进行注册并设置调用终端别名。
manage.py代码
from flask import Flaskapp Flask(__name__)使用flask_script管理项目
from flask_script import Manager
manager Manager(app)from abc import ABC
from flask_script import Command, Optionclass PrintCommand(Command, ABC):命令的相关描述: 打印数据def get_options(self):# 必须返回选项return (# Option(简写选项名, 参数选项名, dest变量名, type数据类型, default默认值),Option(-h, --host, desthost, typestr, default127.0.0.1),Option(-p, --port, destport, typeint, default8000),Option(-d, --debug, destdebug, typebool, defaultFalse))# 也可以使用option_list来替代get_options# option_list (# Option(-h, --host, desthost, typestr, default127.0.0.1),# Option(-p, --port, destport, typeint, default7000),# Option(-d, --debug, destdebug, typebool, defaultFalse)# )# 没有flask的应用实例对象----app对象# def run(self, host, port, debug):# print(测试命令)# print(fself.host{host})# print(fself.port{port})# print(fself.debug{debug})def __call__(self, app, host, port, debug): # 会自动传递当前flask实例对象进来print(f测试命令,{app})print(fself.host{host})print(fself.port{port})print(fself.debug{debug})# manage.add_command(终端命令名称, 命令类)
manager.add_command(print, PrintCommand) # python manage.py printapp.route(/)
def index():return okif __name__ __main__:manager.run()使用效果
(flask) moluoubuntu:~/Desktop/flaskdemo$ python manage.py print -h 0.0.0.0 -p 8000 测试命令 self.host0.0.0.0 self.port8000 self.debugFalse
(flask) moluoubuntu:~/Desktop/flaskdemo$ python manage.py print -h 0.0.0.0 -p 8000 -d true 测试命令 self.host0.0.0.0 self.port8000 self.debugTrue
(flask) moluoubuntu:~/Desktop/flaskdemo$ python manage.py print -h 0.0.0.0 -d true 测试命令 self.host0.0.0.0 self.port8000 self.debugTrue
(flask) moluoubuntu:~/Desktop/flaskdemo$ python manage.py print --host0.0.0.0 -debugtrue 测试命令 self.host0.0.0.0 self.port8000 self.debugTrue
flask2.0以后版本的终端命令使用
flask0.11.0版本以后flask内置了一个Click模块这个模块是终端命令模块可以让我们直接通过Click的装饰器编写和运行一些终端命令。 在flask2.0版本已经不能兼容flask-script模块了所以需要改成使用Click模块来运行和自定义管理终端命令了。
安装了flask2.0以后当前项目所在的python环境就提供了一个全局的flask命令这个flask命令是Click提供的。
要使用Click提供的终端命令flask必须先在环境变量中声明当前flask项目的实例对象所在的程序启动文件。
例如manage.py中使用了 app Flask(__name__)则manage.py就是程序启动文件
使用flask终端命令之前可以配置2个环境变量。
#注意这样配置环境变量适合mac和linux系统不适合Windows
# 指定入口文件开发中入口文件名一般app.py/run.py/main.py/index.py/manage.py/start.py
export FLASK_APPmanage.py# 指定项目所在环境
export FLASK_DEBUGTrue # 开发环境开启DEBUG模式
# export FLASK_DEBUGFalse # 生产环境关闭DEBUG模式默认情况下flask命令提供的子命令。
flask routes # 显示当前项目中所有路由信息
flask run # 把flask项目运行在内置的测试服务器下
#flask run --host0.0.0.0 --port5055
flask shell # 基于项目的应用上下文提供终端交互界面可以进行代码测试。代码
from flask import Flaskapp Flask(__name__)app.route(/)
def index():return okif __name__ __main__:app.run()终端配置
export FLASK_APPmanage.py
export FLASK_DEBUGTrue # 开发环境开启DEBUG模式查看支持的命令 #查看下路由信息
flask routes#进入shell在shell中可以执行相关flask代码
flask shell#运行
flask run # 把flask项目运行在内置的测试服务器下#指定ip和端口运行
flask run --host10.10.0.50 --port5050Click自定义终端命令
在终端自定义执行的命令行参数
案例剖析
#自定义终端命令需要导入click
import click
from flask import Flaskapp Flask(__name__)#注册commond自定义一个跟在flask后面的命令
app.cli.command(faker) # 假设这个用于生成测试数据
#faker后面跟的子命令参数。每个子命令名不能一样
click.argument(data, typestr, defaultuser) # 位置参数
click.argument(position, typestr, defaultmysql) # 位置参数
#第一个是参数简写第二个是详细写全第三个是函数内部调用的名字type是类型default是默认值help是辅助信息
click.option(-n, --number, number, typeint, default1, help生成的数据量.) # 选项参数
#我们上面自定义的faker接子命令执行后要实现的功能通过下面这个函数来定义
def faker_command(data, position, number):命令的说明文档添加测试信息print(添加测试信息)print(f数据类型data{data})print(f数据类型position{position})print(f生成数量number{number})app.route(/)
def index():return okif __name__ __main__:app.run()终端运行可以看到我们自定义的faker
flask faker不写子命令会打印出默认值
也可以自定义
flask faker teacher指定选项参数
flask faker teacher -n200实战案例
大家都知道Django在终端命令行可以实现创建Django项目自动创建好相关文件的操作但是这一功能在flask中是没有集成进去的。 我们通过今天的学的知识可以自己来实现
要求 flask3.0的终端下输入 python manage.py startapp home 则可以在当前目录下创建以下目录和文件 项目目录/ └── home ├── views.py ├── models.py ├── documents.py ├── ws.py ├── services.py ├── urls.py └── tests.py
代码实现
import click, os
from flask import Flaskapp Flask(__name__)
# 配置
app.config.update({DEBUG: False
})app.cli.command(startapp)
click.argument(name)
# click.option(-n, name, helpapp name)
def startapp(name):生成子模块或子应用if os.path.isdir(name):print(f当前{name}目录已存在请先处理完成以后再创建。)returnos.mkdir(name)open(f{name}/views.py, w)open(f{name}/models.py, w)open(f{name}/documents.py, w)open(f{name}/ws.py, w)open(f{name}/services.py, w)open(f{name}/urls.py, w)open(f{name}/test.py, w)print(f{name}子应用创建完成....)app.route(/)
def index():return okif __name__ __main__:app.run()终端调用
创建名为home的项目
flask startapp home查看创建的文件
创建名为users的项目
flask startapp users当然也可以运用模板在创建文件时生成指定的模板感兴趣的朋友试一下吧!
总结
本文讲述了flask1.0和falsk2.0以后的版本在终端脚本命令运行项目的方式在工作中我们经常以这种方式运行项目有用得到的朋友一键三连flask高阶应用持续更新中!!!