Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tornado中的自定义模板管道功能_Python_Tornado - Fatal编程技术网

Python Tornado中的自定义模板管道功能

Python Tornado中的自定义模板管道功能,python,tornado,Python,Tornado,如何定义Tornado中所有模板上可用的自定义模板管道函数 试图实现这样的目标: {{ name | transform_me }} 您可以让控制器共享一个基本RequestHandler,其 get\u template\u命名空间方法被覆盖 您可能需要一个过滤器模块 过滤器.py def transform_me(value): # transform value return transformed_value filters = { 'transform_me

如何定义Tornado中所有模板上可用的自定义模板管道函数

试图实现这样的目标:

{{ name | transform_me }}
您可以让控制器共享一个基本RequestHandler,其
get\u template\u命名空间
方法被覆盖

您可能需要一个过滤器模块

过滤器.py

def transform_me(value):
    # transform value
    return transformed_value


filters = {
   'transform_me': transform_me
}
共享基类

您可以将筛选器添加到模板命名空间。当从继承自
BaseRequestHandler
的处理程序调用
render
时,过滤器将可用

from filters import filters

class BaseRequestHandler(RequestHandler):
   def get_template_namespace(self):
       namespace = super(BaseRequestHandler, self).get_template_namespace()
       namespace.update(filters)
       return namespace
参考:

您可以通过应用程序传递自定义的
ui\u方法,该方法将在所有模板中提供:

import tornado.ioloop
import tornado.web


class MyHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("mytemplate.html")


def my_custom_function(handler, *args):
    # handler is the RequestHandler of current handled request  
    # args are the agrs passed through template
    return 'my_custom {}'.format(str(args)) 

if __name__ == "__main__":
    application = tornado.web.Application(
        [(r"/", MyHandler),],
        # expose function to the templates
        ui_methods={'my_custom_function': my_custom_function}
    )
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()
和模板文件

{{ my_custom_function('adsadasda', 'qweqweq') }}

我不认为tornado的默认库以这种方式支持过滤器。我的意思是你可以定义你可以应用的函数,但是你的语法是
{{transform\u me(name)}}
。您使用的模板库是什么
jinja2
?是的,我只是喜欢将函数作为上下文传递给每个模板。我想全局定义它,这样默认情况下它在所有模板上都可用。你知道这是否可以做到吗?