Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从django模板生成静态html文件?_Html_Django_Django Templates_Static Site_Static Html - Fatal编程技术网

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

如何从django模板生成静态html文件?,html,django,django-templates,static-site,static-html,Html,Django,Django Templates,Static Site,Static Html,我是Django的新手,我很确定我读过或听说过这样做的方法,但我在任何地方都找不到 我不想将渲染输出从模板发送到浏览器,而是想创建一个html文件,这样就可以提供该文件,而无需每次执行渲染过程。我正在开发一个独立于我们主要网站服务器的系统,我需要定期向我们的用户提供我的数据快照,而不允许他们访问开发系统 我的直觉告诉我,我应该能够以某种方式将响应重定向到一个文件,但我在这里的文档或其他帖子中没有看到它。您可以利用Django的模板加载器将模板(包括传递给它的任何上下文)呈现为字符串,然后将其保存

我是Django的新手,我很确定我读过或听说过这样做的方法,但我在任何地方都找不到

我不想将渲染输出从模板发送到浏览器,而是想创建一个html文件,这样就可以提供该文件,而无需每次执行渲染过程。我正在开发一个独立于我们主要网站服务器的系统,我需要定期向我们的用户提供我的数据快照,而不允许他们访问开发系统


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

您可以利用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”)
或任何其他您想要的编码。