2013-04-27 27 views
1

所以我想在Flask中做一個自定義過濾器,我不確定我是否可以使用藍圖自定義過濾器,所以我只是把它放在我的應用程序配置中,因爲我不能在其他應用程序中使用@app裝飾器文件。我可以將自定義Flask jinja2過濾器中的內置過濾器組合嗎?

def configure_jinja2(app): 
    urlize = app.jinja_env.filters['urlize'] 
    truncate = app.jinja_env.filters['truncate'] 
    @app.template_filter('myfilter') 
    def myfilter(s, trim=False, trunc=255): 
     s = urlize(s) 
     if trim: 
      s = truncate(s, trunc) 
     return s 

所以我想結合2內置的Jinja2過濾器,以創建新的自定義過濾器,也將做其他的東西。

這給出了一個錯誤:類型錯誤:do_urlize()至少需要2個參數(1給出)

我怎麼把在eval_context?

https://github.com/mitsuhiko/jinja2/blob/master/jinja2/filters.py

回答

3

jinja2.filters.do_urlize僅僅是一個薄包裝紙圍繞jinja2.utils.urlize不採取eval_context。大多數其他內置過濾器也採用相同的評估環境。

+0

是啊我注意到 from jinja2.utils import Markup,urlize from jinja2.filters import do_truncate – Dexter 2013-04-27 16:39:44

相關問題