Django视图同步

2024-05-31 23:36:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要创建一个页面,其中页面的一部分是相当长时间计算的结果,另一部分是显示计算的一些临时结果的图形。我实现它的方式是我有两种观点。一个视图执行计算并将临时结果存储在会话变量中。第二个视图从session变量检索临时结果,并将matplotlib作为图像显示。在

问题是,我无法找到在第一个视图完成后执行第二个视图的方法。如果第二个视图首先执行,那么我会在图中看到旧数据。在

下面是一些伪代码:

在视图.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

在网址.py公司名称:

^{pr2}$

在结果图.html公司名称:

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

Tags: py名称视图returnpngrequestsessiondef
2条回答

我建议您设置Memcache并使用Django Caching framework,而不是使用会话变量

如果您想使用两个视图,可以使用HttpResponseRedirect从第一个视图重定向到第二个视图

如果您有一个长时间运行的流程,请使用类似于celery的任务队列并将任务卸载到单独的进程中。在

在第二个视图中,只需检查此进程是否已完成,然后显示更新的信息(它还可以显示进程仍在运行的通知)。在

通过使用@cberner建议的缓存机制的^{}很容易与django集成。在

相关问题 更多 >