исправление (ввод) - это функция, которая включает / исключает строки, отображаемые из шаблона на основе логического (with_remediation). Если установлено значение True, при визуализации выводится слово «набор». В противном случае 'set' опускается.
Я хочу включить в список больше переменных в дополнение к 'set'. В шаблоне jinja2 также есть порядковые номера, представленные строкой 'index #'
int template. Кроме того, есть фигурные скобки ' { '
и ' } '
. Я могу включить / исключить выходные данные этих строк / символов при рендеринге. Это фигурные скобки между { ipv4_mode=static }
, например.
Вопрос 1. Можно ли использовать регулярное выражение в моем описании temp.render(set='set')
ниже, чтобы включать какие-либо числа / цифры? Что-то вроде re.compile(r'index\s\d')='re.compile(r'index\s\d')'
Как мне также обрабатывать фигурные скобки?
Вопрос 2. Очевидно, что такой метод плохо масштабируется. Каждый раз, когда я хочу включить / исключить определенную строку, мне нужно вручную добавить ее в список temp.render(set='set', blah='blah', etc....)
. Есть ли более эффективный способ сделать это sh?
import jinja2
loader = jinja2.FileSystemLoader('/tmp')
env = jinja2.Environment(autoescape=True, loader=loader)
with_remediation = False
def remediation(input):
"""Custom filter"""
if(with_remediation):
return input
else:
return ''
env.filters['remediation'] = remediation
temp = env.get_template('template.jinja2')
temp.render(set='set')
Шаблон:
{{ set | remediation }}/settings/network_connections/ETH0/ { ipv4_mode=static } index 1
{{ set | remediation }}/settings/network_connections/ETH0/ { ipv4_address=10.0.0.10 } index 2
{{ set | remediation }}/settings/network_connections/ETH0/ { ipv4_bitmask=24 } index 3
{{ set | remediation }}/settings/network_connections/ETH0/ { ipv4_gateway=10.0.0.1 } index 4