前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >sanic(3):调用templates

sanic(3):调用templates

作者头像
超级大猪
发布2019-11-21 20:29:16
1.6K0
发布2019-11-21 20:29:16
举报
文章被收录于专栏:大猪的笔记

经过上文,我们已经能输出hello这个单词。这说明服务已经成功响应。这里,我们将使用jinja2来进行html的渲染。 jinja2怎么用,已经超出了本文范围,所以本文只讲后端的调用。

创建Jinja2服务

回忆一下,在app.py中,已经定义了jinja2的服务,代码如下:

代码语言:javascript
复制
...
@app.listener('before_server_start')
async def setup_db_redis(app, loop):
    ......
    templates_path = os.path.join(os.getcwd(), 'templates')
    app.template_env = Environment(
        loader=FileSystemLoader(templates_path),
        autoescape=select_autoescape(['html', 'xml']),
        enable_async=False
    )

这里我使用了FileSystemLoader做为loader,避免乱七八糟的问题。

后端渲染

在我写完这些代码之时,前端的哥们已经把html文件写好了。所以项目中多出了这样的结构:

代码语言:javascript
复制
├── templates
│   └── web
│       ├── index.html

渲染示例

index.py文件:

代码语言:javascript
复制
@games_bp.route('/index', methods=['GET'])
async def index(request):
    logging.info("index run")
    online_items = await QB_GAMES.where(eq(online=1)).order_by_desc('id').run()
    template = request.app.template_env.get_template('web/index.html')
    html_content = template.render(online_items=online_items)
    return html(html_content)

1.从数据库中获取了onlien_items(当然你也可以从其它地方获取数据)。 2.通过request.app获取到app对象。jinja2的templates做为一个属性被保存到了app中。 3.使用jinja函数get_template获取templates对象。 4.使用调用render方法渲染出html 5.用sanic的html()方法返回这个response对象。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-06-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建Jinja2服务
  • 后端渲染
    • 渲染示例
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档