Discuss / Python / app['__templating__']是哪里来的啊

app['__templating__']是哪里来的啊

Topic source
if isinstance(r, dict):
    template = r.get('__template__')
    if template is None:
        resp = web.Response(body=json.dumps(r, ensure_ascii=False, default=lambda o: o.__dict__).encode('utf-8'))
        resp.content_type = 'application/json;charset=utf-8'
        return resp
    else:
        resp = web.Response(body=app['__templating__'].get_template(template).render(**r).encode('utf-8'))
        resp.content_type = 'text/html;charset=utf-8'
        return resp

app['__templating__']是哪里来的啊,没明白啊

风飞浅停

#2 Created at ... [Delete] [Delete and Lock User]

app初始化init_jinja2时进行依赖注入,详情请看第39行。

需要注意r.get('__template__')app['__templating__']是两个完全不同的东西

async def init(loop):
    await orm.create_pool(loop=loop, host='127.0.0.1', port=3306, user='www', password='www', db='awesome')
    app = web.Application(loop=loop, middlewares=[
        logger_factory, response_factory
    ])
    init_jinja2(app, filters=dict(datetime=datetime_filter))

init_jinja2不是在response_factory之后才调用的吗

@风飞浅停 我明白了,middlewares里的函数,是在调用了add_route之后才会调用到的,是吧?

风飞浅停

#5 Created at ... [Delete] [Delete and Lock User]

你查看主页的流程图就明白了,注册中间件之后,每个request请求都会调用到

@风飞浅停 非常感谢!!!


  • 1

Reply