如何从django模板生成静态html文件?

时间:2014-03-04 03:03:44

标签: html django django-templates static-site static-html

我是Django的新手,我很确定我已经阅读或听说过这样做的方法,但我无法在任何地方找到它。

我不想将渲染的输出从模板发送到浏览器,而是想创建一个html文件,然后可以在不需要每次都完成渲染过程的情况下进行渲染。我正在开发一个独立于我们主网站服务器的系统,我需要定期为我们的用户提供我的数据快照,而无需他们访问开发系统。

我的直觉说我应该能够以某种方式将响应重定向到文件,但我没有在文档或其他帖子中看到它。

2 个答案:

答案 0 :(得分:22)

您可以利用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)

答案 1 :(得分:3)

django-bakery是一套完善的“帮助器,用于将Django网站作为平面文件烘焙”。