本文實例講述了Sanic框架藍圖用法。分享給大家供大家參考,具體如下:
藍圖是可以用于應用程序內子路由的對象。藍圖并未向應用程序內添加路由,而是定義了用于添加路由的類似方法,然后以靈活且可插入的方式向應用程序注冊路由。
藍圖對于大型應用程序尤其有用,您的應用程序可以分解成為幾個小組或責任區域。
第一個藍圖
假設你在bp/bp_1.py文件下,定義了以下這么一個非常簡單的藍圖:
from sanic import Blueprintfrom sanic.response import textbp = Blueprint("first_bp")@bp.route("/get_info")async def get_info(request): return text("it is ok!")
注冊藍圖
定義了一個藍圖之后,必須在應用程序中注冊:
from sanic import Sanicfrom bp.bp_1 import bpapp = Sanic()app.blueprint(bp)if __name__ == "__main__": app.run()
如此,并將藍圖添加到應用程序當中,并注冊藍圖所定義的所有路由。此時我們就可以訪問/get_info
就可以獲取到數據了
藍圖的使用
在前面一篇《Sanic框架異常處理與中間件操作》中簡單介紹了一下在路由中如何使用中間件與異常以及監聽器等,這些東西在藍圖中同樣可以使用:
中間件:使用藍圖可以在全局范圍內注冊中間件
@bp.route("/get_info")async def get_info(request): return text("get_info")@bp.middleware("request")async def handle_md_request(request): print("request middleware")@bp.middleware("response")async def handle_md_response(request,response): print("response middleware")
異常:使用藍圖可以在全局范圍內注冊異常
from sanic.exceptions import NotFound@bp.exception(NotFound)async def handle_exception(request,exception): return text("404 exception")
靜態文件:靜態文件可以在藍圖前綴下全局提供
bp.static("/home","/aaa/bbb/abc.html")
監聽器:如果需要在服務器啟動/關閉的時候,執行一些特殊的代碼,則可以使用以下監聽器,可用的監聽器如下:
before_server_start:在服務器開始接收連接之前執行 after_server_start:在服務器開始接收連接之后執行 before_server_stop:在服務器停止接收連接之前執行 after_server_stop:在服務器停止接收連接之后執行@bp.listener("before_server_start")async def before_server_start(request,loop): print("before server start")@bp.listener("after_server_start")async def after_server_start(request,loop): print("after server start")@bp.listener("before_server_stop")async def before_server_stop(request,loop): print("before server stop")@bp.listener("after_server_stop")async def after_server_stop(request,loop): print("after server stop")
當服務器啟動時,將會依次打印如下信息:
新聞熱點
疑難解答