在Django服务器上,我有一个页面,其中包含一个启动功能的按钮。 这个函数需要一段时间才能完成,我尝试将进程的更新写入request.session变量,目的是从单独的页面检查其内容。 然而,似乎request.session变量在包含它们的函数完成之前不会更新。至少该变量在此之前不会更新。 我是对的,如果有的话,有没有办法在函数完成之前写入request.session变量?
会话设置正确,我可以用其他示例编写和读取变量。现在我也只是创建一个临时的db记录来存储状态更新信息并从那里读取它,但我很好奇这个request.session的事情 - 我猜是正确的,有办法解决吗? / p>
更新:
views.py
@login_required
def autolink(request):
result, time = access_check(request, 'super')
if not result:
return redirect('index')
result = f_autolink(request)
if result is None:
result = request.session.get('technical', '')
return render(request, 'autolink.html', {'result': result, })
functions.py
def f_autolink(request):
if request.method == 'GET':
result = None
elif request.method == 'POST':
request.session['technical'] = 'starting the job'
result = f_kzd_autolink(request)
else:
result = None
return result
def f_kzd_autolink(request):
homeless = Kzd.objects.filter(payment__isnull=True, returned=False).distinct()
result = []
count = homeless.count()
counter = 0
request.session['technical'] = 'Starting link job - {c} records to process'.format(c=count)
for h in homeless:
counter += 1
request.session['technical'] = 'Checking record {c1} of {c}'.format(c1=counter, c=count)
/* long code that makes the h in homeless cycle run for about 3 minutes, unrelated to the question */
基本上,视图显示了request.session.get('technical',''),但是在它们完成之前,两个函数都没有写入它(然后写入处理最后一条记录)。