私はDjangoを初めて使用するので、これを実行する方法を読んだり聞いたりしたことは確かですが、どこにも見つかりません。
テンプレートからブラウザーにレンダリングされた出力を送信するのではなく、毎回レンダリングプロセスを実行する必要なく提供できるhtmlファイルを作成したいと思います。私はメインのWebサイトのサーバーとは別のシステムで開発しています。ユーザーが開発システムにアクセスできないように、定期的にデータのスナップショットをユーザーに提供する必要があります。
私の直感では、なんとかして応答をファイルにリダイレクトできるはずですが、ドキュメントやここの他の投稿には表示されません。
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)
Django-bakery は、よく開発された「フラットなファイルとしてDjangoサイトを焼き出すためのヘルパーのセット」です。