2012-08-16 78 views
0

默认情况下,jinja2自动转义所有内容,并且我想停止它。我使用的BaseHandler类下面的代码:在Appengine中禁用jinja2自动转义

@webapp2.cached_property 
def jinja2(self): 
    # Returns a Jinja2 renderer cached in the app registry. 
    return jinja2.get_jinja2(app=self.app) 

按照docs,get_jinja2()有一个可调用的“工厂”的说法,其默认为Jinja2的()。我认为我需要将它改为Jinja2(config = {'autoescape':False}),但是如何为工厂指定参数?

回答

2

你应该叫get_jinja2factory设置为一个可调用构造神社实例与您的客户参数:

@webapp2.cached_property 
def jinja2(self): 
    # Returns a Jinja2 renderer cached in the app registry, with no autoescaping. 
    return jinja2.get_jinja2(lambda app: jinja2.Jinja2(app=app,config={'environment_args':{'autoescape':False}})) 
+1

真棒 - 应该有个应该是拉姆达。我对参数进行了小修改(应用程序是必需的,并且config有一个额外的environment_args层),所以它实际上工作。谢谢! – FoxyLad 2012-08-16 23:39:44

0

可能是你不需要逃避整个模板,在这种情况下,你可以试试标签:

`{{autoescape false}}` 

了解更多详情请尝试 docs

+0

谢谢 - 这值得指出。但是,如果您自动关闭,您的性能会更好,所以如果您确信自己不需要自动清除大部分时间,那么最好使用e筛选器逃离危险区域。 – FoxyLad 2012-08-16 23:44:18