2011-11-15 7 views
0

は、私は、ファイルをアップロードするフォームを持っている、と私はそれの外にレポートを生成します。つまり、アーカイブとしてレポートをダウンロードできるようにしたいと思います。どういうわけか、レポートの中にCSSとJS(私のレイアウトから継承したもの)を含めたいと思っていますが、これについてどうやって行くのか分かりません。 これまでは、サーバー側にファイル(レポートが生成されている)を格納していないため、完了した後にファイルを削除します。Djangoの別のビュー内のビューからレポートを使用するには?

私が考えることができる唯一の解決策は、私のアーカイブ生成ビューからurllibを使ってレポートを生成するフォームに投稿し、レスポンスを保存し、スタイルシート/ JSファイルへのリンクを書き直すだけです。

これについてもっと簡単な方法はありますか?クライアントのセッションが存続している限り、サーバー側にいくつかのファイルを保存する方法はありますか?

答えて

1

あなたの代わりにurllibはと投稿の生成されたレポートを表示するために使用ビューでのHttpResponseを使用して、期限が切れていたファイルを削除するcronジョブを持つことができます。あなたは

def report_view(request): 
    ... 
    return render_to_response(request,....) 

の線に沿って何かその後アーカイブ

def report_view(request): 
    ... 
    archive_link = "/some/nice/url/to/the/archive" 
    response = render_to_response(request, ... { "archive-link" : archive_link}) 
    store_archive(response) 
    return response 

def store_archive(response): 
    # here you will need to find css/js files etc 
    # and bundle them in whatever type of archive you like 
    # then temporarily store that archive so it can be accessed by the archive_link 
    # you previously used in your view to allow for downloading 

def report_archive_view(request): 
    # serve the temporarily stored archive, then delete it if you like 

を作成するために応答オブジェクトを使用している場合あなたがHttpResponse in the Django docsを知るために必要なすべてを見つけることができます。

これはあなたのために働くかもしれないが、私は多分、あなたが本当に探していることはgenerate a pdf report using ReportLabにあり、それはあなたが後に実際にあるものです疑いますか?

+0

私のレポートはHTMLベースです。しかしあなたの答えは面白いです:) – Geo

0

あなたは、常にファイルを保持し、セッション

+0

どのように私の期限が切れたセッションを知っていますか? – Geo

+0

あなたのファイルとのセッションへの参照を格納する必要があると思います – second

関連する問題