jinja2 поиск переменных в шаблоне, как сохранить их в порядке? - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть код ниже, он смотрит на файл шаблона 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 (), который я знаюнеупорядоченЕсть ли способ обойти это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...