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

新手上路,请多包涵

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

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

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

原文由 Beverly Block 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 766
2 个回答

您可以利用 Django 的模板加载器来呈现您的模板,包括您传递给它的任何上下文,作为一个字符串,然后将其保存到文件系统。如果您需要将该文件保存在外部系统(例如 Amazon S3)上,您可以使用 Boto 库。

这是一个如何将视图呈现到文件的示例,使用可选的查询字符串参数作为触发器…

 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)

原文由 Brandon Taylor 发布,翻译遵循 CC BY-SA 3.0 许可协议

django-bakery 是一套完善的“将 Django 站点烘焙为平面文件的助手”。

原文由 the 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题