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

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

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

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

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

最佳答案

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

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

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)

关于html - 如何从 django 模板生成静态 html 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22162027/

相关文章:

html - datatables.net 插件将左侧菜单隐藏在 IE 中的表格后面

javascript - 让 django 代码在页面加载后运行

javascript - 使 django html 表单在提交时执行 2 个操作

python - 无法调用自定义上下文处理器

python - 如何在 django 中的日期时间中分离 HH 和 MM

jquery - 使用 .next() 选择具有特定类的 div

javascript - 对复选框执行操作

c - 用 C 抓取网页最简单的方法是什么? (通过 https)

python - Django:如何在相关字段的相关字段上排序

python - Django : cannot unpack non-iterable int object