Как создать статический HTML-файл из шаблона Django?

Я новичок в Django, и я почти уверен, что читал или слышал о том, как это сделать, но я нигде не могу его найти.

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

Моя интуиция говорит, что я должен каким-то образом перенаправить ответ на файл, но я не вижу его в документации или других постах здесь.

3 ответа

Решение

Вы можете использовать загрузчик шаблонов Django для визуализации вашего шаблона, включая любой контекст, который вы передаете ему, в виде строки, а затем сохранить его в файловой системе. Если вам нужно сохранить этот файл во внешней системе, такой как Amazon S3, вы можете использовать библиотеку Boto.

Вот пример того, как визуализировать представление в файл, используя необязательный параметр querystring в качестве триггера...

from django.shortcuts import render
from django.template.loader import render_to_string

def my_view(request):
    as_file = request.GET.get('as_file')
    context = {'some_key': 'some_value'}

    if as_file:
        content = render_to_string('your-template.html', context)                
        with open('path/to/your-template-static.html', 'w') as static_file:
            static_file.write(content)

    return render('your-template.html', context)

django-bakery - это хорошо разработанный "набор помощников для выпечки вашего сайта Django в виде плоских файлов".

Специально для этого есть хорошо разработанное приложение Django: django-render-static

Другие вопросы по тегам