Как преобразовать шаблон Django в HTML-шаблон - PullRequest
0 голосов
/ 09 октября 2018

Я хотел бы знать, есть ли какая-нибудь библиотека / модуль, который может конвертировать мои шаблоны django в обычный html-файл.

Допустим, у меня есть этот шаблон django:

index.html

{% extends "base.html" %}
<p> My name is {{ name }}. Welcome to my site </p>

И я хочу преобразовать его в нечто вроде этого:

index.html

< the content of base.html here >
<p> My name is John Doe. Welcome to my site </p>

Есть ли какая-нибудь простая утилита для этого?

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Допустим, вы хотите сохранить файл шаблона index.html и сгенерировать его отрендеренную версию из контекста, подобного {'name': 'John Doe'} в файл с именем index2.html .Вы можете добиться этого, сначала получив текстовый рендеринг index.html с заданным контекстом, а затем записав его в другой html-файл.

Я предполагаю, что у вас есть файл index.html в «шаблонах» внутри васпроект django, и вы оставили BASE_DIR значение по умолчанию.

import os
from django.template import engines
from django.conf import settings

# Get rendered result as string by passing {'name' : 'John Doe'} to index.html
with open(os.path.join(settings.BASE_DIR, 'templates'), 'r') as f:        
    template = engines['django'].from_string(f.read())
    text = template.render({'name':'John Doe'})

# Write the rendered string into a file called 'index2.html'
with open(os.path.join(settings.BASE_DIR, 'templates','index2.html'), 'w+') as f:
    f.write(text)
0 голосов
/ 09 октября 2018

Возможно, вы уже использовали render для визуализации вашего шаблона в виде:

return render(request, 'folder/some.html')

Аналогично вы можете сделать:

html = render(request, 'folder/some.html').content

для получения желаемого HTML.

Этот HTML-код в формате байтов .

...