如何从django模板生成静态html文件?
我是Django的新手,我很确定我读过或听说过这样做的方法,但我在任何地方都找不到 我不想将渲染输出从模板发送到浏览器,而是想创建一个html文件,这样就可以提供该文件,而无需每次执行渲染过程。我正在开发一个独立于我们主要网站服务器的系统,我需要定期向我们的用户提供我的数据快照,而不允许他们访问开发系统如何从django模板生成静态html文件?,html,django,django-templates,static-site,static-html,Html,Django,Django Templates,Static Site,Static Html,我是Django的新手,我很确定我读过或听说过这样做的方法,但我在任何地方都找不到 我不想将渲染输出从模板发送到浏览器,而是想创建一个html文件,这样就可以提供该文件,而无需每次执行渲染过程。我正在开发一个独立于我们主要网站服务器的系统,我需要定期向我们的用户提供我的数据快照,而不允许他们访问开发系统 我的直觉告诉我,我应该能够以某种方式将响应重定向到一个文件,但我在这里的文档或其他帖子中没有看到它。您可以利用Django的模板加载器将模板(包括传递给它的任何上下文)呈现为字符串,然后将其保存
我的直觉告诉我,我应该能够以某种方式将响应重定向到一个文件,但我在这里的文档或其他帖子中没有看到它。您可以利用Django的模板加载器将模板(包括传递给它的任何上下文)呈现为字符串,然后将其保存到文件系统。如果需要将该文件保存在外部系统(如AmazonS3)上,可以使用该库 下面是一个如何将视图渲染到文件的示例,使用可选的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站点烘焙为平面文件的帮助程序集”。您始终可以将模板呈现为字符串,然后可以使用vanilla Python将其保存为文件。您的用例是否涉及更多内容?@Paolo的评论对我很有帮助。如果出现类似“ascii编解码器无法对字符进行编码”的错误。使用Paolo的Python2方法。在Python3中,打开('path','w',encoding='utf-8')以避免隐藏的编码问题和头痛。。。可以将行
open('path/to/your template static.html','w')
更改为open('path/to/your template static.html','w',encoding=“UTF-8”)
或任何其他您想要的编码。