codecamp

求值上下文

求值上下文(缩写为 eval context 或 eval ctx )是 Jinja 2.4 中引入的新对象, 并可以在运行时激活/停用已编译的特性。

当前它只用于启用和禁用自动转义,但也可以用于扩展。

在之前的 Jinja 版本中,过滤器和函数被标记为环境可调用的来从环境中检查自动 转义的状态。在新版本中鼓励通过求值上下文来检查这个设定。

之前的版本:

@environmentfilter
def filter(env, value):
    result = do_something(value)
    if env.autoescape:
        result = Markup(result)
    return result

在新版本中,你可以用 contextfilter() 从实际的上下文中访问求值上下 文,或用evalcontextfilter() 直接把求值上下文传递给函数:

@contextfilter
def filter(context, value):
    result = do_something(value)
    if context.eval_ctx.autoescape:
        result = Markup(result)
    return result

@evalcontextfilter
def filter(eval_ctx, value):
    result = do_something(value)
    if eval_ctx.autoescape:
        result = Markup(result)
    return result

求值上下文一定不能在运行时修改。修改只能在扩展中的 用 nodes.EvalContextModifier 和nodes.ScopedEvalContextModifier 发生,而不是通过求值上下文对 象本身。

class jinja2.nodes.EvalContext(environmenttemplate_name=None)

Holds evaluation time information. Custom attributes can be attached to it in extensions.

autoescape

True 或 False 取决于自动转义是否激活。

volatile

如果编译器不能在编译期求出某些表达式的值,为 True 。在运行时应该 始终为False 。

自定义过滤器
自定义测试
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

从其它的模板引擎切换

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }