专栏首页大猪的笔记sanic(2):创建handler

sanic(2):创建handler

上文说到已经创建了app,但是此时的项目里只有两个光秃秃的文件。要完成一个完整的网站,还需要在上面添加handler和templates。

添加handler

添加蓝图

我们在项目中创建包handlers,在里面添加__init__.pyindex.py两个文件。结构如下:

├── app.py
├── handlers
│   ├── index.py
│   ├── __init__.py
├── run_qb_games.py
├── srvconf.py

值得注意的是,sanic提供了蓝图(blueprints)这个功能,有点类似于django的app。 在__init__.py中输入如下内容,创建蓝图games_bp,它的前缀是/games,也就是说,这个蓝图下的handler都要使用/games前缀才能访问。

import logging
from sanic import Blueprint

games_bp = Blueprint('games', url_prefix='/games')

import handlers.index

响应蓝图

蓝图是一个构架,需要为这个构架写实际的代码来响应。在index.py中创建一个sanic的handler,并把它添加到蓝图。代码很简单:

from sanic.response import html,json
import logging
from handlers import games_bp


@games_bp.route('/index', methods=['GET'])
async def index(request):
    logging.info("index run")
    return html('hello')

调用蓝图

有了有内容的蓝图,还需要在app中进行调用。转到代码app.py,在里面添加如下内容:

......
from sanic import Sanic
enable_async = sys.version_info >= (3, 6)
app = Sanic(__name__)

# 在这里导入blueprints,注意顺序在app之后,因为games_bp引入的包也可能导入app这个神对象
# 这样的循环依赖会导致app 被创建两次。
from handlers import games_bp
app.blueprint(games_bp)
......

此时,再运行python3.6 run_qb_games.py -p 80 -d True,打开浏览器,在localhost/games/index应该可以看到输出了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • sanic(1):创建app

    sanic是一个非常NB的高性能python框架。最近正好公司有一个小项目。所以用sanic来试试手是很不错的了。 由于sanic的中文资料和项目还很少很少,...

    超级大猪
  • python笔记:反射

    超级大猪
  • 笔记:新装ubuntu软件

    超级大猪
  • 优化Vue项目的文件大小

    在使用Vue搭建项目时,经常由于引入的库太多,导致打包后的文件体积非常大,特别是vendor.js。这就造成页面第一次打开很慢,如果在浏览器中调试页面(打开控制...

    JouyPub
  • @import 属性——加载外部层叠样式表

    @import 加载外部层叠样式表。@import 规则必须放在其他除了@charset规则以外的CSS规则的前面;@import 规则不可嵌套于条件规则组...

    Html5知典
  • 直播源码中的主播PK功能是如何实现的

    直播行业为赢得更广泛用户的青睐,自然要不断开发更有趣的玩法、模式,在直播源码中加入主播PK功能就是一种提高直播互动性、激发用户好胜心的方法,一方面这种方法可以吸...

    nicai123
  • 机器学习模型部署—PMML

    之前阐述了逻辑回归、孤立森林等建模方法,本文介绍如何把建好的模型保存为标准格式(PMML文件)。

    阿黎逸阳
  • 选择合适的动画缓动函数

    最近在写要兼容IE6的幻灯组件(感兴趣的点这里)。为了让幻灯的切换效果更舒服,就研究了下动画的缓动函数。

    Joel
  • 日常电脑操作小技能篇(生活无处不精彩)

    学到老
  • 谷歌开源预训练新范式BiT,准确率提高近25%!网友评价:CV界的BERT

    BERT在NLP界无往不利,大大提高了自然语言模型的性能,那么,在计算机视觉领域,有没有可能一个CNN打天下?

    量子位

扫码关注云+社区

领取腾讯云代金券