【发布时间】:2011-12-14 21:48:04
【问题描述】:
我正在构建一个需要长时间计算的应用程序。用户提交信息后,大约需要30分钟计算,然后返回结果。所以我正在考虑添加一个“请稍候”页面。
我按照以下链接中提到的说明进行操作,
http://groups.google.com/group/django-users/browse_thread/thread/c1b0d916bbf86868
但是,当我提交某些内容时,它会保留在 http://127.0.0.1:8000/please_wait
并且不会重定向到像http://127.0.0.1:8000/display_DHM这样的结果页面
有人知道怎么回事吗?
这里是所有相关文件,我尝试了各种方法,但是当我 提交表单,它只返回 please_wait 页面,然后留在那里 永远。没有发生重定向。 由于我想先检查它是否有效,因此没有实际的 代码中的计算。
url.py
urlpatterns = patterns('',
(r'^test$',views.test_form),
(r'^please_wait', views.please_wait),
url(r'^run_DHM$', views.run_DHM, name="run_DHM") ,
url(r'^displayDHM', views.display_DHM, name="displayDHM")
)
view.py
def test_form(request):
return render_to_response('test.html')
def please_wait(request):
return render_to_response('please_wait.html')
def run_DHM(request):
### lengthy calculations... ...
return HttpResponse("OK")
def display_DHM(request):
return render_to_response('display_DHM.html')
test.html
{% extends "baseFrame.html" %}
{% block maincontent %}
<form method="POST" action="please_wait">
<p>Test:</p>
<div id="address"></div>
<p>Type your value in here:</p>
<p><textarea name="order" rows="6" cols="50" id="order"></
textarea></p>
<p><input type="submit" value="submit" id="submit" /></p>
</form>
{% endblock %}
please_wait.html
<html>Please wait
<script type="text/javascript" src="http://code.jquery.com/
jquery-1.7.1.min.js">
$.getJSON('{% url run_DHM %}', function(data) {
if (data == 'OK') {
window.location.href = '{% url displayDHM %}';
} else {
alert(data);
}
});
</script>
</html>
display_DHM.html
<HTML>
<BODY>END FINALLY!</BODY>
</HTML>
【问题讨论】:
-
您应该将此进程移至后台,将其加入队列或类似的事情。芹菜是做到这一点的正确方法。你也可以使用线程。