我有一个 Django Form
,它在提交时会调用相当耗时的操作。这个操作(一个 Python 函数)会在执行过程中创建数据。
创建相关数据后,我想将其存储到活动session
中,以便用户可以在生成结果时看到结果(现在通过简单的刷新)。
我编写了一个模板来显示session
. 但是,似乎只有在长时间运行的函数返回时才完整保存会话(在执行期间刷新页面不会显示任何修改的组件)。从When sessions are saved 开始,我相信一旦字典被修改,会话应该被更新。
我是否误解了会话是如何保存的?或者,是否有另一种方法来实现我正在寻找的东西?
下面是相关views.py
代码的抽象:
def my_form(request):
""" Render the form, with any results included below. """
if request.method == "POST":
form = MyForm(request.POST)
if form.is_valid():
request.session.clear()
long_running_func(request.session, form)
else:
form = MyForm()
return render_to_response('my_form.html', {'form': form,
'session': request.session})
def long_running_func(session, form):
session["status"] = "Executing"
result_data = long_running_task()
session["results"] = result_data
...