引言
Sanic 反对路由装璜器将处理函数映射到 HTTP 申请。咱们能够在“路由”装璜器中应用名为 methods 的可选参数来解决列表中的任何 HTTP 办法。蓝图是一个概念,用于将子路由从大型应用程序的子模块插入 Sanic 应用程序。蓝图必须注册到 Sanic 应用程序对象中。应用蓝图还能够防止在整个应用程序中传递 Sanic 应用程序对象。

一般来说,蓝图包含 MVC 框架中的 view.py和 model.py。但为什么叫蓝图呢?每个子目录将蕴含远远超过一个蓝图对象。要害是要强化这样一个概念,即这个目录中的所有货色都是围绕这些离散的组件之一来解决的。

蓝图定义
依据 官网文档,咱们能够晓得:

蓝图是利用中能够作为子路由的对象。蓝图定义了同样的增加路由的形式,您能够将一系列路由注册到蓝图上而不是间接注册到利用上,而后再以可插拔的形式将蓝图注册到到应用程序。

创立蓝图
在上面的程序中,咱们可能将这些路由组合到一个繁多的蓝图中。重要的是,这使咱们可能将URL门路(/my_bp)的独特局部拉到蓝图中,这使咱们可能灵便地在将来做出扭转。

无论你决定如何组织你的文件构造,你可能总是应该应用蓝图。它们使组织更容易,甚至能够嵌套。就集体而言,我只在最琐碎的网络应用中应用 @app.route。对于任何真正的我的项目,我总是将路由附加到蓝图中。

from sanic import responsefrom sanic import Blueprintmy_bp = Blueprint("my_blueprint")@my_bp.route('/my_bp')async def my_bp_func(request):    return response.text("My First Blueprint")

注册蓝图
仅仅创立咱们的蓝图是不够的。Python 没有方法晓得它们的存在。咱们须要导入咱们的蓝图并将它们附加到咱们的应用程序中。这能够通过一个简略的注册办法实现:app.blueprint()

from controller import my_bpapp = Sanic(__name__)app.blueprint(my_bp)

整体演示
为了演示路由和蓝图的应用,新建一个 main.py 文件:

from sanic import Sanicfrom sanic import responsefrom sanic.log import loggerfrom controller import my_bpapp = Sanic("main")app.blueprint(my_bp)@app.route('/')def run(request):    return response.text("Hello World!")@app.route('/post', methods=['POST'])def on_post(request):    try:        return response.json({            "host": request.host,            "content": request.json,            })    except Exception as ex:        import traceback        logger.error(f"{traceback.format_exc()}")app.run(host='127.0.0.1', port=8080, debug=True)

而后新建一个 controller.py :

from sanic import responsefrom sanic import Blueprintmy_bp = Blueprint("my_blueprint")@my_bp.route('/my_bp')async def my_bp_func(request):    return response.text("My First Blueprint")

让咱们运行 main.py ,拜访 http://127.0.0.1:8080,能看到如下后果:

并在拜访 http://127.0.0.1:8080/my_bp,能看到咱们的蓝图结果显示 :

咱们能够应用 Postman 客户端来展现咱们的 POST 申请:

回到服务器也能看到如下的后盾信息:

总结
最先在 Flask 框架中理解到蓝图的概念,然而在Sanic中,组织所谓组件的规范办法也是蓝图。因而,每个子目录将有一个而且只有一个蓝图对象。本文简略介绍了蓝图的定义,而后通过创立和注册蓝图,做了一个简略的演示,但这对于蓝图的了解远远不够。

因为蓝图对大型利用是现实的。一个我的项目能够实例化一个利用对象,初始化几个扩大,并注册一汇合的蓝图。依据官网文档,蓝图对于大型利用特地有用。在大型利用中,您能够将利用代码依据不同的业务分解成多个蓝图。

以上就是本次分享的全部内容,当初想要学习编程的小伙伴欢送关注Python技术大本营,获取更多技能与教程。