求值上下文求值上下文(缩写为 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
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
求值上下文一定不能在运行时修改。修改只能在扩展中的 用
自定义测试测试像过滤器一样工作,只是测试不能访问环境或上下文,并且它们不能链式使用。 测试的返回值应该是 True 或 False 。测试的用途是让模板设计者运行类型和 一致性检查。 这里是一个简单的测试,检验一个变量是否是素数: import math
def is_prime(n):
if n == 2:
return True
for i in xrange(2, int(math.ceil(math.sqrt(n))) + 1):
if n % i == 0:
return False
return True
你可以通过更新环境上的 environment.tests['prime'] = is_prime
模板设计者可以在之后这样使用测试: {% if 42 is prime %}
42 is a prime number
{% else %}
42 is not a prime number
{% endif %}
全局命名空间
|
Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )
GMT+8, 2025-5-7 15:32 , Processed in 0.039104 second(s), 17 queries .