|  | @@ -0,0 +1,83 @@
 | 
	
		
			
				|  |  | +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-документе ссылки определяются как:
 | 
	
		
			
				|  |  | +<a href="#">Ссылка</a>'''
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +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 = '''<select name="cities">
 | 
	
		
			
				|  |  | +{% for c in cities -%}
 | 
	
		
			
				|  |  | +{% if c.id > 6 -%}
 | 
	
		
			
				|  |  | +    <option value="{{c['id']}}">{{c['city']}}</option>
 | 
	
		
			
				|  |  | +{% elif c.city == "Москва" -%}  
 | 
	
		
			
				|  |  | +    <option>{{c['city']}}</option>
 | 
	
		
			
				|  |  | +{% else -%}
 | 
	
		
			
				|  |  | +    {{c['city']}}
 | 
	
		
			
				|  |  | +{% endif -%}
 | 
	
		
			
				|  |  | +{% endfor -%}
 | 
	
		
			
				|  |  | +</select>'''
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +def test_5():
 | 
	
		
			
				|  |  | +    tm = Template(link)
 | 
	
		
			
				|  |  | +    msg = tm.render(cities=cities)
 | 
	
		
			
				|  |  | +    print(msg)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +def main():
 | 
	
		
			
				|  |  | +    test_5()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if __name__ == '__main__':
 | 
	
		
			
				|  |  | +    main()
 |