我有以下代码,它查看一个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(),我知道它是无序的。可以解决这个问题吗?