2014-03-04 99 views
13

我是Django的新手,我很確定我已經閱讀或聽說過一種方法來做到這一點,但我無法在任何地方找到它。如何從django模板生成靜態html文件?

與其將模板的渲染輸出發送到瀏覽器,我想創建一個html文件,然後可以在不需要每次都通過渲染過程的情況下進行投放。我正在開發一個與我們的主網站服務器分離的系統,我需要定期爲我們的用戶提供我的數據快照,而無需他們訪問開發系統。

我的直覺說,我應該能夠以某種方式將響應重定向到一個文件,但我沒有在文檔或其他帖子中看到它。

+0

您可以隨時將模板呈現爲字符串,然後使用vanilla Python將其保存爲文件。你的用例涉及的不僅僅是這些嗎? – Brandon

+0

也https://github.com/datadesk/django-bakery – Paolo

回答

14

您可以利用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) 
+1

不是'open',而是'codecs.open'指定'utf-8' – Paolo

3

django-bakery是一個發達的「設置助手的烘烤你的Django網站作爲平面文件「。

相關問題