蓝图定义
Flask blueprint 是flask自带的一种框架结构,方便搭建更大的项目结构
Flask blueprint 的官方案例
单蓝图模式
'''
蓝图官方案例
注册单一的蓝图实例
使用app加载蓝图【单蓝图模式】
'''
from flask import Blueprint
from flask import Flask
simple_blueprint = Blueprint('simple_page',__name__) # 创建蓝图
#bluePrint的路由和视图
@simple_blueprint.route('/')
def index():
return 'hello world'
# 启动项目
if __name__ == '__main__':
app = Flask(__name__)
app.register_blueprint(simple_blueprint) #注册蓝图
app.run()
多蓝图模式
'''
blueprint1.py
使用app加载蓝图【多蓝图模式】
'''
from flask import Blueprint
simple_blueprint1 = Blueprint('simple_page1',__name__)
#bluePrint的路由和视图
@simple_blueprint1.route('/index1')
def index():
return 'hello index1'
'''
bluePrint2.py
使用app加载蓝图【多蓝图模式】
'''
from flask import Blueprint
simple_blueprint2 = Blueprint('simple_page2',__name__)
#bluePrint的路由和视图
@simple_blueprint2.route('/index2')
def index():
return 'hello index2'
'''
manage.py
'''
from flask import Flask
from FlaskBluePrint.ManyBluePrint.BluePrint1 import simple_blueprint1
from FlaskBluePrint.ManyBluePrint.BluePrint2 import simple_blueprint2
app = Flask(__name__)
app.register_blueprint(simple_blueprint1)
app.register_blueprint(simple_blueprint2)
if __name__ == "__main__":
app.run()
与bluePrint结合紧密的有两个插件,我们采用blueprint之后,通常会用一种叫做惰性加载的方式,加载app。Flask_scrtip 结合蓝图或者自己可以定义flask项目的命令模式。类似django的【命令行】Python manage.py runserver。
由于flask轻量,便于开发,Flask项目可以和爬虫或者其他的项目结合。例如:使用flask + celery 驱动爬虫,使用flask + 微信(qq) 进行聊天机器人管理,使用flask + psutil 自动化监控。
flask-script模块
安装flask-script模块
pip install flask-script
案例【单蓝图命令行模式】
'''
flask script 官方案例
'''
from flask import Flask
from flask_script import Manager
app = Flask(__name__)
@app.route("/")
def index():
return "Hello world"
manager = Manager(app) #对app进行命令行序列化
if __name__ == "__main__":
manager.run() #启动flask manage,manage启动app
在命令行运行上述案例
python 文件名称 runserver
多蓝图命令行模式
'''
使用app加载蓝图【多蓝图命令行模式1】
'''
from flask import Blueprint
simple_blueprint1 = Blueprint('simple_page1',__name__)
#bluePrint的路由和视图
@simple_blueprint1.route('/index1')
def index():
return 'hello index1'
'''
使用app加载蓝图【多蓝图命令行模式2】
'''
from flask import Blueprint
simple_blueprint2 = Blueprint('simple_page2',__name__)
#bluePrint的路由和视图
@simple_blueprint2.route('/index2')
def index():
return 'hello index2'
'''
多蓝图命令执行文件
'''
from flask import Flask
from flask_script import Manager
from BluePrint1 import simple_blueprint1
from BluePrint2 import simple_blueprint2
app = Flask(__name__) #创建蓝图
app.register_blueprint(simple_blueprint1) #注册蓝图
app.register_blueprint(simple_blueprint2)
manager = Manager(app) #对app进行命令行序列化
if __name__ == "__main__":
app.run()
flask-script添加命令
'''
flask-script 添加命令
'''
from flask import Flask
from flask_script import Manager
app = Flask(__name__)
@app.route('/')
def index():
return 'I am flaskScriptaddCommand file '
manager = Manager(app)# 对App进行命令行序列化
@manager.command
def hello(name = 'createsuperuser'):
'''
:param name: 是命令行可传递的参数,在命令行以--name 来传递
'''
username = input('Please enter your username: ')
email = input('Please enter your email: ')
password = input('Please enter your password: ')
password_again = input('Please enter your password again: ')
print('恭喜%s执行成功'%name)
return '啦啦啦,德玛西亚!'
@manager.command
def root(ip = '127.0.0.1',port = 8000):
'''
:param ip: 是命令行可传递的参数,在命令行以--key 来传递
:param port: 例:python flaskScriptAddCommand.py root --ip 0.0.0.0 --port 8080
:return:
'''
print('root@%s:%s'%(ip,port))
if __name__ == '__main__':
manager.run()