Форум сайта python.su
2
Что-то не совсем понял можно ли из child шаблона в вставлять в родительский методом итерирования. Например родительский шаблон
<html> <head></head> <body> {% block content %}{% endblock %} </body> </html>
{% extends "template.html" %}
{% block content %}
<p>{{x}}</p>
{% endblock %}
<html> <head></head> <body> <p>Вася</p> <p>Коля</p> <p>Машина</p> <p>12</p> </body> </html>
Офлайн
857
>>> doc = '''<html> ... <head></head> ... <body> ... {} ... </body> ... </html>''' >>> >>> cont = '<p>{}</p>' >>> >>> lst = ['a a', 'b b', 'c c'] >>> >>> out = doc.format('\n'.join(map(cont.format, lst))) >>> print(out) <html> <head></head> <body> <p>a a</p> <p>b b</p> <p>c c</p> </body> </html> >>>
Офлайн
2
Спасибо. Я тоже сперва об этом подумал. Но потом решил что засовывать html код внутрь питон кода не очень хороший тон. Хотя, наверное, это действительно самое простое решение.
Офлайн
14
Может я чего не понял, но вроде все просто.
from jinja2 import FileSystemLoader, Environment env = Environment(loader=FileSystemLoader('.'), ) template = env.get_template('child') result = template.render(data=['Вася', 'Коля', 'Машина', 12]) out = open('out', 'w', encoding='utf8') out.write(result) out.close()
<html> <head></head> <body> {% block content %}{% endblock %} </body> </html>
{% extends "base" %} {% block content %} {%- for i in data %} <p>{{i}}</p> {%- endfor %} {% endblock %}
Офлайн
2
alex925Да, именно тот эффект которого я и хотел добиться. Что-то for вставить в child совсем не додумался.
Шаблон child{% extends "base" %} {% block content %} {%- for i in data %} <p>{{i}}</p> {%- endfor %} {% endblock %}
Офлайн