1,蓝图(Blueprints)

蓝图可用于子路由的应用,代替增加路由的存在,蓝图的定义和增加路由的方法相似,灵活的在应用中注册,并且可插拔的方式.

尤其是在大型应用中使用蓝图的时候在你逻辑打断的地方或者是响应的地方

  • 1.1,第一个蓝图

接下来展示一个简单的在你的应用程序中已经注册了的处理管理员的视图函数如上图所示.

支持你保存到my_blueprint.py文件中,那将会是应用程序的入口.

  • 1.2,注册蓝图

蓝图必须注册到应用的程序中(和flask一毛一样)

这样将会增加在应用程序中的蓝图,并且通过蓝图注册任何的定义路由,比如说在app.router中注册的路由如上图所示.

  • 1.3蓝图组和嵌套

蓝图也可以被注册成列表或者元组的一部分,注册递归循环的穿过子序列,并且通过蓝图注册,蓝图组的方法被提供给进程,允许结构字典,模仿 前面的结束,考虑上边的(人为的退出)例子:

  • 初始化应用程序的的层次如下所示:
from sanic import Blueprint

static = Blueprint("content_authors", url_prefix="/authors")

static1 = Blueprint("content_static", url_prefix="/static")

from sanic import Blueprint
from .static import static
from .authors import authors
content = Blueprint.group(static, authors, url_prefix="/content") # 如果没有特殊的要求,蓝图可以合并和写 from .content import content
from .info import info api = Blueprint.group(content, info, url_prefix="/api") from sanic import Sanic
from .api import api app = Sanic(__name__) app.blueprint(api) # 直接可以用实例化Sanic类中的blueprint方法
  • 1.4,使用蓝图

蓝图几乎都有座位一个应用存在的功能

  • 1.5,Websocket路由

Websocket处理程序可以使用@bp.websocket装饰器或者bp.add_websocket_route方法被注册在蓝图里

  • 1.6中间件

使用蓝图允许注册到全局的中间件,实例如上图所示.

  • 1.7异常

异常能够专门被应用于全局的蓝图

  • 1.8,静态文件

静态文件可以在蓝图前缀下全局提供服务

  • 1.9启动和暂停蓝图

在服务器可以运行蓝图函数在启动和暂停服务的时候,如果是多进程模式运行,将会触发这些程序运行

from sanic import Blueprint
import pymysql # 实例化一个蓝图的对象
bq = Blueprint("my_blueprint") @bq.listener("before_server_start")
async def setup_connection(app, loop):
global database
database = pymysql.connect(host="127.0.0.1", port=3306) @bq.listener("after_server_stop")
async def close_connection(app, loop):
await database.close()

参数说明:

  • before_server_start:在服务启动前执行连接数据库
  • after_server_start:值服务器启动后执行接通连接
  • before_server_stop:在服务器挺喜欢停止前执行接通连接
  • after_server_stop:在服务器停止后并且所有的请求已经完成执行
  • 1.10用url_for建立url

如果你希望为蓝图 设计一个路由,切记,采用以上的格式

sanic官方文档解析之蓝图的更多相关文章

  1. sanic官方文档解析之Example(一)

    1,示例 这部的文档是简单的示例集合,它能够帮助你快速的启动应用大部分的应用,这些应用大多事分类的,并且提供给ini工作的连接代码: 1.1,基础示例 这部分示例集成了提供简单sanic简单的代码 单 ...

  2. sanic官方文档解析之路由

    1,路由,路由相当于一个网址的地址,来确定网址的位置和唯一性 当http://server.url/被允许访问服务器,当最后的"/"通过路由匹配到了业务逻辑处理的函数,将会返回一个 ...

  3. sanic官方文档解析之logging和request Data

    1,sanic的logging: Sanic允许有做不同类型的日志(通过的日志,错误的日志),在基于Python3的日志API接口请求,你必须具备基本的Python3的日志知识,在你如果想创建一个新的 ...

  4. sanic官方文档解析之Deploying(部署)和Extension(扩展)

    1,Deploying(部署) 通过内置的websocket可以很简单的部署sanic项目,之后通过实例sanic.Sanic,我们可以运行run这个方法通过接下来的关键字参数 host (defau ...

  5. sanic官方文档解析之streaming(流动,滚动)和class_based_views(CBV的写法)

    1,streaming(流媒体) 1.1请求流媒体 Sanic允许你通过流媒体携带请求数据,如下,当请求结束await request.stream.read()就会返回None,仅仅只有post请求 ...

  6. sanic官方文档解析之Custom Protocols(自定义协议)和Socket(网络套接字)

    1,Custom Protocol:自定义协议 温馨提示:自定义协议是一个高级用法,大多数的读者不需要用到此功能 通过特殊的自定义协议,你可以改变sanic的协议,自定义协议需要继承子类asyncio ...

  7. sanic官方文档解析之静态文件和版本

    1,静态文件 就向图片文件一样,静态文件和指导性的文件,当通过Sanic服务端用app.static()方法注册的时候,这种方法采用端点url和文件名称获得.这样的文件的指定,将会通过指定的端点访问. ...

  8. sanic官方文档解析之下载和Configuration

    1,sanic框架是做什么的? sanic的官方网址:https://sanic.readthedocs.io/en/latest/ sanic框架是一个类似于flask框架的在Python3.5以上 ...

  9. sanic官方文档解析之Example(二)

    1,通过docker部署sanic项目 通过Docker和Docker Compose部署SANIC应用程序是一项很容易实现的任务,下面的示例提供了示例simple_server.py的部署 FROM ...

随机推荐

  1. Flutter 发布APK时进行代码/资源混淆的坑

    Flutter 发布APK时进行代码/资源混淆的坑 @author ixenos 1. 关键点 proguard是Java的代码混淆工具,但是当用第三方库的时候,必须要告诉proguard不要检查,因 ...

  2. java面试题之能创建volatile数组吗?

    答:能,只不过只是一个指向数组的引用,而不是整个数组,如果改变了引用指向的数组,将会受到volatile的保护,但是如果多个线程同时改变数组的元素,volatile关键字就不能起到保护的作用.

  3. 维修队列(bzoj 1500)

    Description Input 输入的第1 行包含两个数N 和M(M ≤20 000),N 表示初始时数列中数的个数,M表示要进行的操作数目.第2行包含N个数字,描述初始时的数列.以下M行,每行一 ...

  4. Redis命令行之Set

    一.Redis之Set简介 1. Set是String类型的无序集合(元素成员唯一). 2. Set是通过hash表实现的,添加.删除.查找的复杂度都是O(1). 3. 每个集合最大成员数为232-1 ...

  5. Android UI设计--半透明效果对话框及activity(可做遮罩层)

    下面是style的一些属性及其解释 <style name="dialog_translucent" parent="@android:style/Theme.Di ...

  6. poj2513字典树+欧拉图判断+并查集断连通

    题意:俩头带有颜色的木棒,要求按颜色同的首尾相连,可能否? 思路:棒子本身是一条边,以俩端为顶点(同颜色共点),即求是否有无向图欧拉路(每条棒子只有一根, 边只能用一次,用一次边即选一次棒子). 先判 ...

  7. .Net Core下使用RabbitMQ比较完备的两种方案(虽然代码有点惨淡,不过我会完善)

    一.前言     上篇说给大家来写C#和Java的方案,最近工作也比较忙,迟到了一些,我先给大家补上C#的方案,另外如果没看我上篇博客的人最好看一下,否则你可能看的云里雾里的,这里我就不进行具体的方案 ...

  8. BZOJ——1571: [Usaco2009 Open]滑雪课Ski

    http://www.lydsy.com/JudgeOnline/problem.php?id=1571 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit:  ...

  9. Servlet(生命周期)

    <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" ...

  10. 转:HtmlCxx用户手册

    1.1 简介 使用由KasperPeeters编写的强大的tree.h库文件,可以实现类似STL的DOM树遍历和导航. 打包好的Css解析器. 看似很像C++代码的C++代码(其实已不再是C++了) ...