当前位置:   article > 正文

python学习笔记——flask之Flask-Script

flask-script

前言:

flask-script的作用是可以通过命令行的形式来操作Flask

不使用flask-script:直接可以运行flask程序的app

使用flask-script   :命令控制manager,manager控制app

 

一、找官网

1.百度Flask-Script

https://pypi.org/project/Flask-Script/

2.安装

pip install Flask-Script

3.GitHub网址

https://github.com/smurfix/flask-script

4.开发文档网址

https://flask-script.readthedocs.io/en/latest/

二、测试第一个案例

1.代码(根据文档案例修改)

test13_Flask-Script.py 

  1. # coding:utf-8
  2. from flask_script import Manager
  3. from flask import Flask
  4. app = Flask(__name__)
  5. manager = Manager(app)#使用Manager管理app
  6. @manager.command #使用装饰器注册一个命令
  7. def hello():#命令的名字就是方法名
  8. print("hello")
  9. if __name__ == "__main__":
  10. manager.run()#app已经被Manager管理,所以manager的run启动app的run

2.运行程序试一下

启动不了程序,默认出来提示信息

hello命令 是自己注册的

shell 、runserver是系统自带的

3.Flask-Script控制命令(python + python文件 + 命令)

注意文件目录

3.1执行hello命令,相当于执行的hello方法

python test13_Flask-Script.py hello

结果:

hello

3.2执行启动命令runserver(可以查看帮助文档 python + python文件 + 命令 + --help

添加一段代码,启动服务器后作为测试使用

  1. @app.route('/')
  2. def index():
  3. 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

3.3测试shell命令

python test13_Flask-Script.py shell

进入了交互模式 

====================

以下内容参考如下链接

https://blog.csdn.net/weixin_45735361/article/details/106029153

 ====================

三、定义命令的三种方法

  1. 使用@command装饰器
  2. 使用类继承自Command类
    1. from flask_script import Command,Manager
    2. from flask_app import app
    3. manager = Manager(app)
    4. class Hello(Command):
    5. '''prints hello world'''
    6. def run(self):
    7. print("hello world")
    8. manager.add_command('hello',Hello())

    使用类的方式,有三点需要注意

  3. 必须继承自Command基类。
  4. 必须实现run方法。
  5. 必须通过add_command方法添加命令。
  6. 使用option装饰器:
    如果想要在使用命令的时候还传递参数进去,那么使用@option装饰器更加的方便
  1. @manager.option('-n','--name',dest='name')
  2. def hello(name):
  3. print('hello ',name)

这样,调用hello命令

  1. python manage.py -n juran
  2. python manage.py --name juran

 

添加参数到命令中

option装饰器:以上三种创建命令的方式都可以添加参数,@option装饰器,已经介绍过了

  1. @manager.option('-n', '--name', dest='name', default='xima')
  2. @manager.option('-u', '--url', dest='url', default=None)
  3. def hello(name, url):
  4. if url is None:
  5. print("hello", name)
  6. else:
  7. print("hello", name, "from", url)

command装饰器:command装饰器也可以添加参数,但是不能那么的灵活

  1. @manager.command
  2. def hello(name="Fred")
  3. print("hello", name)

类继承:类继承也可以添加参数

  1. from flask_Flask import Comman,Manager,Option
  2. class Hello(Command):
  3. option_list = (
  4. Option('--name','-n',dest='name'),
  5. )
  6. def run(self,name):
  7. print(f"hello {name}")

如果要在指定参数的时候,动态的做一些事情,可以使用get_options方法

  1. class Hello(Command):
  2. def __init__(self,default_name='xima'):
  3. self.default_name = default_name
  4. def get_options(self):
  5. return [
  6. Option('-n','--name',dest='name',default=self.default_name),
  7. ]
  8. def run(self,name):
  9. print('hello',name)

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/836622
推荐阅读
相关标签
  

闽ICP备14008679号