暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

flask蓝图小结

443

是该考虑将项目分解的时候了,这个时候会用到蓝图。

Flask 用 蓝图(blueprints) 的概念来在一个应用中或跨应用制作应用组件和支持通用的模式。蓝图很好地简化了大型应用工作的方式,并提供给 Flask 扩展在应用上注册操作的核心方法。一个 Blueprint 对象与 Flask 应用对象的工作方式很像,但它确实不是一个应用,而是一个描述如何构建或扩展应用的 蓝图 。

蓝图在组织flask代码时,有两种形式

  1. 功能式架构

  2. 分区式架构

  3. 功能式架构是静态资源集中化管理

分区式架构,适用于子模块有特殊需要的情况,在创建蓝图构造Blueprint对象时,可以指定static和templates, 其结构类似于下面这样

其实网上的抄来抄去的,未必自己都很明白,我个人的看法是功能式架构适合强耦合的,是一个系统各个功能模块比较紧凑、依赖比较深,且需要采用统一的格调布局。分布式架构适合松耦合的场景,比如前后台和api管理。

这次我打算要做的事情是实现一个admin后台管理系统、一个home前端信息系统和一个restfull api服务管理,理论上将应该用三个工程更为合适一些。


/admin/__init__.py,创建一个蓝图对象

from flask import Blueprint

admin_blue = Blueprint('admin', __name__, url_prefix='/admin')
from . import views


/admin/views.py,创建蓝图内的路由

# admin 模块
from admin import admin_blue


@admin_blue.route('/register')
def register():
return 'admin register'
@admin_blue.route('/login')
def login():
return 'admin login'
@admin_blue.route('/modify_password')
def modify_password():
return 'admin modify_password'
@admin_blue.route('/')
def index():
return 'admin index'

/home/__init__.py,创建一个蓝图对象

from flask import Blueprint

home_blue = Blueprint('home', __name__, url_prefix='/home')
from . import views

/home/views.py,创建蓝图内的路由

# home模块
from home import home_blue

@home_blue.route('/register')
def register():
return 'home register'
@home_blue.route('/login')
def login():
return 'home login'
@home_blue.route('/modify_password')
def modify_password():
return 'home modify_password'
@home_blue.route('/')
def index():
return 'home index'

/api/__init__.py,创建一个蓝图对象

from flask import Blueprint

api_blue = Blueprint('api', __name__, url_prefix='/api')
from . import views

/api/views.py,创建蓝图内的路由

# api模块
from api import api_blue

@api_blue.route('/getuser')
def getuser():
return 'getuser'
@api_blue.route('/getorgination')
def getorgination():
return 'getorgination'

app.py,注册蓝图

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world(): # put application's code here
return 'Hello World!'
from admin import admin_blue
from home import home_blue
from api import api_blue

app.register_blueprint(admin_blue)
app.register_blueprint(home_blue)
app.register_blueprint(api_blue)

if __name__ == '__main__':
app.run()


文章转载自python与大数据分析,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论