赞
踩
https://pypi.org/project/Flask-Script/
pip install Flask-Script
https://github.com/smurfix/flask-script
https://flask-script.readthedocs.io/en/latest/
test13_Flask-Script.py
- # coding:utf-8
- from flask_script import Manager
- from flask import Flask
-
- app = Flask(__name__)
- manager = Manager(app)#使用Manager管理app
-
- @manager.command #使用装饰器注册一个命令
- def hello():#命令的名字就是方法名
- print("hello")
-
- if __name__ == "__main__":
- manager.run()#app已经被Manager管理,所以manager的run启动app的run
启动不了程序,默认出来提示信息
hello命令 是自己注册的
shell 、runserver是系统自带的
注意文件目录
python test13_Flask-Script.py hello
结果:
hello
添加一段代码,启动服务器后作为测试使用
- @app.route('/')
- def index():
- return '已访问到'
可以查看runserver帮助文档
python test13_Flask-Script.py runserver --help
optional arguments:
-?, --help show this help message and exit
-h HOST, --host HOST
-p PORT, --port PORT
--threaded
--processes PROCESSES
--passthrough-errors
-d, --debug enable the Werkzeug debugger (DO NOT use in production
code)
-D, --no-debug disable the Werkzeug debugger
-r, --reload monitor Python files for changes (not 100% safe for
production use)
-R, --no-reload do not monitor Python files for changes
--ssl-crt SSL_CRT Path to ssl certificate
--ssl-key SSL_KEY Path to ssl key
-h HOST, --host HOST这两个都是设置主机的命令 ,其他的命令在一行用逗号隔开,也是这个意思。
可以设置主机和端口
python test13_Flask-Script.py runserver -h 0.0.0.0 -p 80
python test13_Flask-Script.py shell
进入了交互模式
- from flask_script import Command,Manager
- from flask_app import app
-
- manager = Manager(app)
-
- class Hello(Command):
- '''prints hello world'''
-
- def run(self):
- print("hello world")
-
- manager.add_command('hello',Hello())
使用类的方式,有三点需要注意
- @manager.option('-n','--name',dest='name')
- def hello(name):
- print('hello ',name)
这样,调用hello命令
- python manage.py -n juran
- python manage.py --name juran
option装饰器:以上三种创建命令的方式都可以添加参数,@option装饰器,已经介绍过了
- @manager.option('-n', '--name', dest='name', default='xima')
- @manager.option('-u', '--url', dest='url', default=None)
- def hello(name, url):
- if url is None:
- print("hello", name)
- else:
- print("hello", name, "from", url)
command装饰器:command装饰器也可以添加参数,但是不能那么的灵活
- @manager.command
- def hello(name="Fred")
- print("hello", name)
类继承:类继承也可以添加参数
- from flask_Flask import Comman,Manager,Option
-
- class Hello(Command):
- option_list = (
- Option('--name','-n',dest='name'),
- )
-
- def run(self,name):
- print(f"hello {name}")
如果要在指定参数的时候,动态的做一些事情,可以使用get_options方法
- class Hello(Command):
- def __init__(self,default_name='xima'):
- self.default_name = default_name
-
- def get_options(self):
- return [
- Option('-n','--name',dest='name',default=self.default_name),
- ]
-
- def run(self,name):
- print('hello',name)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。