jinja2在模板中查找变量,如何使其保持顺序?

时间:2018-11-15 14:40:54

标签: python networking jinja2

我有以下代码,它查看一个jinja模板文件,找到其中的所有变量,然后要求用户为每个文件输入一个值。这样做的想法是,只需将新的“ .j2”文件拖放到该文件夹​​中,便可以将该代码重用于多个模板。它的工作原理是,当它开始提示用户输入变量时,每次运行时变量的顺序都不相同。我可以看到用户对模板感到沮丧,因为他们每天运行100次变量随机排列的模板。关于如何使它们每次都以相同顺序出现的任何想法?模板文件从上到下。

template = input("Template Name: ")
file_loader = FileSystemLoader('.')
env = Environment(loader=file_loader)
template = env.get_template(template)


#finds all variables in a template file
def listvariables(env,template='test.j2'):
    source = env.loader.get_source(env, template)
    findv = env.parse(source)
    uv = meta.find_undeclared_variables(findv)
    return uv

uv = listvariables(env)


print("--Begin Entering Variables--")

#Ask user to input data for each variable
variables = {}
for i in uv:
    variables[i] = input("Enter %s:" % i)

示例模板:

router bgp {{local_asn}}
 neighbor {{bgp_neighbor}} remote-as {{remote_asn}}
!
 address-family ipv4
  neighbor {{bgp_neighbor}} activate
exit-address-family

“ uv = meta.find_undeclared_variables(findv)”产生一个set(),我知道它是无序的。可以解决这个问题吗?

0 个答案:

没有答案