Найти - Пользователи
Полная версия: Генерация html, шаблонизатор jinja2
Начало » Python для новичков » Генерация html, шаблонизатор jinja2
1
PyNovice
Что-то не совсем понял можно ли из child шаблона в вставлять в родительский методом итерирования. Например родительский шаблон
<html>
<head></head>
<body>
{% block content %}{% endblock %}
</body>
</html>
Child шаблон
{% extends "template.html" %}
{% block content %}
<p>{{x}}</p>
{% endblock %}

И на лету меняя значение X вставлять в исходный чтобы получилось что-то вроде
<html>
<head></head>
<body>
<p>Вася</p>
<p>Коля</p>
<p>Машина</p>
<p>12</p>
</body>
</html>

Вообще мне нужно сгенерировать yml файлик для маркета. Может я занимаюсь извращением и есть более удобные инструменты? Просто шаблонизатор это первое что пришло в голову.
py.user.next
>>> 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>
>>>
PyNovice
Спасибо. Я тоже сперва об этом подумал. Но потом решил что засовывать html код внутрь питон кода не очень хороший тон. Хотя, наверное, это действительно самое простое решение.
alex925
Может я чего не понял, но вроде все просто.
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()

Шаблон base
<html>
    <head></head>
    <body>
        {% block content %}{% endblock %}
    </body>
</html>

Шаблон child
{% extends "base" %}
{% block content %}
    {%- for i in data %}
        <p>{{i}}</p>
    {%- endfor %}
{% endblock %}
PyNovice
alex925
Шаблон child
{% extends "base" %}
{% block content %}
    {%- for i in data %}
        <p>{{i}}</p>
    {%- endfor %}
{% endblock %}
Да, именно тот эффект которого я и хотел добиться. Что-то for вставить в child совсем не додумался.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB