0

ページの一部がかなり長い計算の結果であり、他の部分が計算の中間結果を示すグラフであるページを作成する必要があります。私がそれを実装した方法は、私には2つのビューがあるということです。1 つのビューが計算を行い、中間結果をセッション変数に保存します。2 番目のビューは、セッション変数から中間結果を取得し、matplotlib を使用して値を画像として表示します。

問題は、最初のビューが完了した後に 2 番目のビューを実行する方法が見つからないことです。2 番目のビューが最初に実行されると、グラフに古いデータが表示されます。

ここにいくつかの擬似コードがあります:

ビュー.py:

def calc(request):
  ...
  do calculations
  store interim results in session variable
  return render_to_response(...'result':value...)

def graph(request)
  retrieve interim results from session variable
  create and return HttpResponse(content_type='image/png') with graph

urls.py:

(r'^report/$', 'calc',),
(r'^report/graph.png/$', 'graph',),

resultAndGraph.html:

Result: {{result}}
<img src="graph.png" width="400" height="400">
4

2 に答える 2

0

セッション変数を使用する代わりに、Memcacheをセットアップし、 Django Caching フレームワークを使用することをお勧めします。

ただし、2 つのビューを使用する場合は、 HttpResponseRedirectを使用して、最初のビューから 2 番目のビューにリダイレクトできます。

于 2012-06-22T20:10:44.490 に答える
0

実行時間の長いプロセスがある場合は、セロリのようなタスク キューを使用して、タスクを別のプロセスにオフロードします。

2 番目のビューでは、このプロセスが完了したかどうかを確認し、更新された情報を表示します (プロセスがまだ実行中であるという通知を表示することもできます)。

django との統合はdjango-celery、@cberner によって提案されたキャッシュ メカニズムを使用することで簡単です。

于 2012-06-23T12:53:36.733 に答える