tornado模板参数传递

xiaoxiao2021-02-27  94

tornado的模板渲染可以按直观印象分为两部分:

第一部分,是由底层模板继承而来的向后传递方式。

即定义base.html,然后render方法中的html里用包含语句{% extends 'base.html' %}来继承母模板base.html。

这样继承可以很多层,但是在多层继承的过程中有一个问题,就是render方法中的参数只在当前html里可用,上层模板里是不能再放这个参数供调用的。

也就是说这个继承来的母模板都是静态的。

当然硬要改全局变量来达到效果,有些太牵强了。实际上应选择第二种模板方式。

第二部分,就UImodule模块,这里模板是函数化的,并且定义的是子模板,换句话说是html子语句块,相对于前面的模板来说,这个是向前传递的。

即render方法中的html里可含有这个子语句块,{% module moduleins(*args) %},这个子块可以用class moduleinsModule(tornado.web.UIModule)来随意书写。

并可以将html语句块码放在/templates/modules文件夹中的html文件里,然后用return self.render_string('***.html',*args)来调出。

{% module moduleins(*args) %}中的参数*args可以从handler的render方法里传递进来,灵活性得到极大提高。

因此,对于静态母模板,就用extends的方法,动态的子语句块用uimodule,render后的html文件可以选择在一个合适的居中位置链接两者,同时还能保证参数的使用。

对于一些模板扩展,即将当前使用(render)的html文件模块化,还可以使用{% include xxx.html %}来填充。

转载请注明原文地址: https://www.6miu.com/read-16995.html

最新回复(0)