1. 简介
Flask框架是一个轻量级web框架,它不自带任何数据库或表单处理工具,只是提供了一些工具让你方便地扩展。它的扩展工具机制十分优秀,使得它的生态系统十分庞大,远超其他同类框架,而且并不失去灵活性。
2. 蓝图
Flask中的蓝图可以将不同的功能分配到不同的模块中,更好地组织代码和管理项目。而与此同时,子域名能够让我们将不同的服务部署到同一个ip地址下的不同二级或三级域名,映射到不同的路由上,更好地实现微服务。
2.1 蓝图的使用
一般使用蓝图可以分为如下几步:
1. 在flask应用上注册蓝图;
2. 在蓝图的模块中定义路由和视图函数。
首先,我们需要实例化一个flask对象,并且将蓝图注册进来。如下所示:
from flask import Flask, Blueprint
# 定义一个名为api的蓝图,url_prefix参数表示路由url前缀,可以为空
api = Blueprint('api', __name__, url_prefix='/api')
# 将蓝图注册进应用
app = Flask(__name__)
app.register_blueprint(api)
此时,我们就已经将蓝图注册到应用中了。这个蓝图的路由以/api开头。
下一步,我们就需要定义蓝图中的路由和视图函数了。
@api.route('/users/')
def users():
return 'users'
此时,我们要访问的路由就是/api/users/,它会返回"users"字符串。
2.2 子域名的使用
一般使用子域名可以分为如下几步:
1. 在hosts文件中添加二级或三级域名的映射;
2. 在flask应用上注册蓝图,并设置域名;
3. 在蓝图的模块中定义路由和视图函数。
首先,我们需要在hosts文件中添加如下内容:
127.0.0.1
api.yourdomain.com
这意味着,api.yourdomain.com这个域名将被映射到本地的127.0.0.1地址。
然后,我们需要在flask应用上注册蓝图,并设置域名。
from flask import Flask, Blueprint
# 定义一个名为api的蓝图,url_prefix参数表示路由url前缀,可以为空
api = Blueprint('api', __name__, subdomain='api')
# 将蓝图注册进应用
app = Flask(__name__)
app.config.from_object('your_config_module')
app.register_blueprint(api)
注意,上述代码的关键之处在于subdomain='api'这一参数,它设置了子域名为"api",之后访问/api前缀的路由时,将会把子域名和/api拼接到一起。
最后,我们需要在蓝图的模块中定义路由和视图函数。
@api.route('/users/')
def users():
return 'users'
此时,我们要访问的路由就是http://api.yourdomain.com/users/,它会返回"users"字符串。