2017-03-03 9 views
0

私はxmlテンプレートを持っており、jinja2テンプレートエンジンを使用してデータをロードしています。私は、テンプレート内のすべての変数が供給されていることを検証しようとしている:Pythonで宣言されていない変数をネストする方法jinja2

from jinja2 import Environment, PackageLoader, meta 
tmp = JinjaEnvironment().from_string(TEMPLATE) 
parsed_content = tmp.environment.parse(TEMPLATE) 
for key in meta.find_undeclared_variables(parsed_content): 
    if key not in data: 
     print 'Missing ', key 

問題がfind_undeclared_variables方法は、ネストされた変数を返さないということです。

For example if my data is {'main': {'age': 22, 'height': 6}, 'size': 10} 
then that method returns ['main', 'size'] 
but what I need is ['main.age', 'main'height', 'size'] 

目的は、すべての変数が置換されていることを検証することです。何か案は? jinja2schema

from jinja2schema import infer, model 
def test(self): 
    for key, val in infer(TEMPLATE).items(): 
     assert key in self.data, 'Missing {}'.format(key) 

     if type(val) == model.List: 
      for subkey in val.item.keys(): 
       assert subkey in self.data[key][0], 'Missing {}.{}'.format(key, subkey) 

     elif type(val) == model.Dictionary: 
      for subkey in val.keys(): 
       assert subkey in self.data[key], 'Missing {}.{}'.format(key, subkey) 
+0

ここでは、[最小、完全、かつ検証](http://stackoverflow.com/help/mcve)の例を使用することができます。 –

答えて

0

は、私はそれに役立つパッケージを見つけました。
関連する問題