元 API

2018-02-24 15:39 更新

New in version 2.2.

元 API 返回一些關(guān)于抽象語法樹的信息,這些信息能幫助應(yīng)用實(shí)現(xiàn)更多的高級模板概 念。所有的元 API 函數(shù)操作一個?Environment.parse()?方法返回的抽象語法 樹。

jinja2.meta.find_undeclared_variables(ast)

Returns a set of all variables in the AST that will be looked up from the context at runtime. Because at compile time it’s not known which variables will be used depending on the path the execution takes at runtime, all variables are returned.

>>> from jinja2 import Environment, meta
>>> env = Environment()
>>> ast = env.parse('{% set foo = 42 %}{{ bar + foo }}')
>>> meta.find_undeclared_variables(ast)
set(['bar'])

Implementation

Internally the code generator is used for finding undeclared variables. This is good to know because the code generator might raise a?TemplateAssertionError?during compilation and as a matter of fact this function can currently raise that exception as well.

jinja2.meta.find_referenced_templates(ast)

Finds all the referenced templates from the AST. This will return an iterator over all the hardcoded template extensions, inclusions and imports. If dynamic inheritance or inclusion is used,?None?will be yielded.

>>> from jinja2 import Environment, meta
>>> env = Environment()
>>> ast = env.parse('{% extends "layout.html" %}{% include helper %}')
>>> list(meta.find_referenced_templates(ast))
['layout.html', None]

This function is useful for dependency tracking. For example if you want to rebuild parts of the website after a layout template has changed.

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號