from jinja2 import Template from markupsafe import escape class Person: def __init__(self, name, age): self.name = name self.age = age def get_name(self): return self.name def get_age(self): return self.age def test_1(): name = "Федор" age = 28 per = Person("Федор", 22) tm = Template("Мне {{ p.get_age() }} лет и зовут {{ p.get_name() }}.") msg = tm.render(p = per) print(msg) ''' Экранирование и блоки raw, for, if ''' data = '''{% raw %}Модуль Jinja вместо определения {{ name }} подставляет соответствующее значение{% endraw %}''' link = '''В HTML-документе ссылки определяются как: Ссылка''' def test_2(): tm = Template(data) msg = tm.render() print(msg) def test_3(): tm = Template("{{ link | e}}") msg = tm.render(link=link) print(msg) def test_4(): msg = escape(link) print(msg) '''Блок for, if''' cities = [{'id':1, 'city': 'Москва'}, {'id':5, 'city': 'Тверь'}, {'id':7, 'city': 'Минск'}, {'id':8, 'city': 'Смоленск'}, {'id':11, 'city': 'Калуга'}] link = '''''' def test_5(): tm = Template(link) msg = tm.render(cities=cities) print(msg) def main(): test_5() if __name__ == '__main__': main()