2012-08-16 22 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