我需要创建一个页面,其中页面的一部分是相当长时间计算的结果,另一部分是显示计算的一些临时结果的图形。我实现它的方式是我有两种观点。一个视图执行计算并将临时结果存储在会话变量中。第二个视图从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">
我建议您设置Memcache并使用Django Caching framework,而不是使用会话变量
如果您想使用两个视图,可以使用HttpResponseRedirect从第一个视图重定向到第二个视图
如果您有一个长时间运行的流程,请使用类似于celery的任务队列并将任务卸载到单独的进程中。在
在第二个视图中,只需检查此进程是否已完成,然后显示更新的信息(它还可以显示进程仍在运行的通知)。在
通过使用@cberner建议的缓存机制的^{} 很容易与django集成。在
相关问题 更多 >
编程相关推荐