33

私は Django を初めて使用し、これを行う方法について読んだり聞いたりしたことがあると確信していますが、どこにも見つかりません。

レンダリングされた出力をテンプレートからブラウザーに送信するのではなく、毎回レンダリング プロセスを実行しなくても提供できる html ファイルを作成したいと考えています。メイン Web サイトのサーバーとは別のシステムで開発を行っており、開発システムへのアクセスを許可せずに、データの定期的なスナップショットをユーザーが利用できるようにする必要があります。

私の直感では、何らかの方法で応答をファイルにリダイレクトできるはずですが、ドキュメントや他の投稿では見られません。

4

2 に答える 2

34

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)
于 2014-03-04T03:52:33.600 に答える
6

django-bakeryはよく開発された「Django サイトをフラット ファイルとしてベイクするヘルパーのセット」です。

于 2016-07-08T16:05:13.360 に答える