美文网首页
Flask模板之测试器和环境对象

Flask模板之测试器和环境对象

作者: 煮茶boy | 来源:发表于2018-10-09 21:14 被阅读0次

测试器: 在Jinja2中,测试器是一些用来测试变量和表达式,返回布尔值(True或False)的特殊函数.

  • 判断一个变量或者表达式是否是数字, 用is连接变量和测试器:
{% if age is number %}
    {{ age * 365 }}
{% else %}
     无效的数字
{% endif %}
  • 内置测试器
1. callable(object)     -- 判断对象是否可以被调用
2. defined(value)       -- 判断变量是否已经定义
3. undefined(value)   -- 判断变量是否未定义
4. none(value)        -- 判断变量是否是None
5. number(value)    -- 判断变量是否是数字
6. string(value)      -- 判断变量是否是字符串
7. sequence(value)   -- 判断变量是否是序列
8. iterable(value)    -- 判断变量是否可以迭代
9. mapping(value)    --  判断变量是否是匹配对象,比如字典
10. sameas(value, other)    判断变量和other是否指向相同的内存地址
  • 给测试器传递参数
is 的左侧是测试器的第一个参数,其他参数可以添加到括号传入,也可以在右侧使用空格连接.
{% if foo is sameas(bar) %}
等同于
{% if foo is sameas bar %}
  • 自定义测试器
    使用Flask提供的app.template_test(name)来注册一个测试器(name可以不传).
@app.template_test()
def baz(n):
    if n = "baz::
         return True
    return False

模板环境对象

在Jinja2中,渲染行为有Jinja2.Environment类控制,所有的配置选项,上下文变量,全局函数,过滤器和测试器都存储在Environment实例上,当与Flask结合后,我们并不单独创建Environment对象,而是使用Flask创建的Environment对象,它存储在app.jinja_env属性上.

  • 使用app.jinja_env更改jinja2的设置
app.jinja_env.variable_start_string = '[['
app.jinja_env.variable_end_string = ']]'

模板环境中的全局函数,过滤器,测试器分别存储在Environment对象的globals,filters和tests属性中,这3个属性都是字典对象.我们也可以直接操作这3个字典来添加相应的函数和变量,这通过向对应的字典添加一个键值对实现,传入模板的名称作为键,对应的函数对象或变量作为值.

  • 添加自定义全局对象
def bar():
    return "I am bar"
foo = "I am foo"
app.jinja_env.globals['bar'] = bar
app.jinja_env.globals['foo'] = foo
  • 添加自定义过滤器
def smiling(s):
    return s + ":)"
app.jinja_env.filters["smiling"] = smiling
  • 添加自定义测试器
def baz(n):
    if n == "baz"
        return True
   return False
app.jinja_env.tests["baz"] = baz

相关文章

  • Flask模板之测试器和环境对象

    测试器: 在Jinja2中,测试器是一些用来测试变量和表达式,返回布尔值(True或False)的特殊函数. 判断...

  • Flask---迁移数据库实例以及步骤讲解

    #从flask中导入Flask 实例化flask对象 渲染模板from flaskimport Flask,ren...

  • 全面的Flask教程

    flask快速教程: √ 1、Python安装和编辑器 √ 2、flask安装和运行 √ 3、模板和样式 √ 4、...

  • Flask模板

    一.Flask模板中的特殊变量和函数 用途:可以在自己的模板中访问一些Flask默认内置的函数和对象.当然,这些变...

  • Flask模板之全局对象

    Flask模板的全局对象: 全局对象是指在所有的模板中都可以直接使用的对象,包括在模板中导入的模板. 内置全局函数...

  • 第1章 安装

    FLask有两个主要依赖:路由、调试和Web服务器网管接口,模板系统由Jinjia2提供。 1.1 使用虚拟环境 ...

  • 利用Python Flask搭建本地测试平台

    最近在写Resful 请求,因为测试服务器还没搭好,自己就在本地用Python Flask 框架搭建了一个测试环境...

  • Flask jinja2模板

    Python Flask JIJIA2模板渲染 A.Flask渲染Jinja2模板和模板传参 如何渲染模板:Fla...

  • Python中Flask框架的变量和函数

    config 可以从模板中直接访问Flask当前的config对象: request 就是flask中代表当前请求...

  • Flask框架学习之jinja2模板

    flask渲染jinja2模板和传参: 1、如何渲染模板: 模板放在“template”文件夹下。 从flask导...

网友评论

      本文标题:Flask模板之测试器和环境对象

      本文链接:https://www.haomeiwen.com/subject/rigyaftx.html