Python 将Django站点烘焙为静态文件有什么好的选择吗?

Python 将Django站点烘焙为静态文件有什么好的选择吗?,python,database,django,amazon-s3,Python,Database,Django,Amazon S3,假设您有一个现有的数据库支持的Django站点。一些简单的东西,比如单个模型包含每个小联盟棒球队的记录。该模型由一个视图访问,该视图列出所有团队,另一个视图接受slug,然后创建一个关于该团队的详细信息页面 有没有一个很好的选项可以将应用程序转换成一堆烘焙的平面文件,这样就可以从静态文件服务(如Amazon的S3)提供服务 我曾经玩弄过,但我不清楚它如何应用于一个由数据库支持的现有站点 如有任何建议,将不胜感激。提前感谢。您要求在静态环境中托管动态站点,这是不可能的。唯一的方法是导出所有文件,将

假设您有一个现有的数据库支持的Django站点。一些简单的东西,比如单个模型包含每个小联盟棒球队的记录。该模型由一个视图访问,该视图列出所有团队,另一个视图接受slug,然后创建一个关于该团队的详细信息页面

有没有一个很好的选项可以将应用程序转换成一堆烘焙的平面文件,这样就可以从静态文件服务(如Amazon的S3)提供服务

我曾经玩弄过,但我不清楚它如何应用于一个由数据库支持的现有站点


如有任何建议,将不胜感激。提前感谢。

您要求在静态环境中托管动态站点,这是不可能的。唯一的方法是导出所有文件,将它们放入静态服务器。您可以使用
wget
,它将复制所有文件并将其转换为html


这个问题的一个退步是,它只能创建html文件,如果有指向页面的链接,即搜索表单等将不起作用,基于Javascript的链接可能不起作用。

我有一个类似的设置,使用Django,但在GAE上。我创建了一个构建脚本,用于构建静态HTML文件。由于GAE版本的Django模板略有不同,这可能需要一些测试

但本质上你做的是

from django.template import Template, Context
from django.template.loader import get_template

t = get_template('template1.html')   #Need to verify this. GAE template allows me to just call template.render(path, context). Not sure about pure Django templates
c = Context({ 'variable' : 'value'})
with open("file1.html", "w") as f:
    f.write(t.render(c))   #This works for me, but if this doesn't in pure Django, try render_to_string

HTH

我理解你的意图,但是现在任何像样的框架都提供了某种缓解动态内容痛苦的方法。有了一个正确实现的缓存,静态和动态之间的区别将是微不足道的。相信我


愉快的编码,朋友。

我不熟悉任何将现有django站点转换为静态html站点的方法。也许值得一看新的django/python PaaS提供程序套件。像这样的网站应该很容易在其中一个平台上运行,而且每个月都应该非常便宜

您可能希望签出的某些提供程序包括:


一个新的版本刚刚发布,尽管它已经存在并被作者使用了很长一段时间:

我还没有试过使用它,但它看起来确实不错:我会的

基本上没有维护。以下是项目自述中提到的一些备选方案:

  • ,建造并维护了公园里可爱的人们。(读一读 )
  • ,由。除其他外,它一直是 保持最新版本的Django

谢谢我完全听到你在动态v上的声音。静态问题。在我的幻想幻觉中,有一个光滑的Python包,它将在数据库中循环并逐个烘焙页面,就像从内到外的wget一样。虽然我可能是在开玩笑,但我必须咬紧牙关,以wget的方式来处理它。在静态环境中,你不能运行任何应用程序。但是只要你不定期更新,
wget
就会处理得很好,如果你更新了,你需要将wget连接到你的动态服务器(我想是本地的),然后更新文件。谢谢你的提示。如何部署?您是否编写了一些代码,在数据库中循环,并针对每个条目运行上面的代码,然后推送结果?是的,我的构建脚本基本上从一些文件中获取内容,将它们合并到模板中,并创建静态HTML。我没有将它设置为自动推送,因为我不经常更改那里的内容,但这应该很容易做到。好吧,那种“自定义”构建脚本是我一直认为我必须结束的地方,但是在这里,有其他人的观点是很好的。我总有一种想法,如果我问一下互联网,一些邪恶的Python大师可能会有一个automagic解决方案等着我。谢谢。我完全同意,在部署数据库驱动的应用程序时,缓存是唯一的启示。在我当前的用例中,tho,我实际上考虑的更多的是成本而不是负载。提供平面文件更便宜,我想尝试利用它。谢谢你的提示。我实际上正在考虑将静态文件作为PaaS站点的替代品。我主要使用谷歌应用程序引擎,但我希望在他们即将转向更昂贵的定价计划之前削减成本。