Регулярные выражения и фигурные скобки при отрисовке шаблона jinja2 - PullRequest
1 голос
/ 20 июня 2020

исправление (ввод) - это функция, которая включает / исключает строки, отображаемые из шаблона на основе логического (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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...