将渐进式数据从 django 视图发送到 ajax

Send progressive data from django view to ajax

提问人:Gabriel 提问时间:10/25/2023 更新时间:10/25/2023 访问量:22

问:

我有一个 django 网络应用程序。我正在使用 jquery 发送 POST。通过该 POST,我从后端获得多个信息。但是该页面需要等到所有信息都准备好,然后才能提取所有信息。例如,我希望在第一个完成时显示,然后,当第二个完成时,显示,依此类推。

这是我的观点:

def home(request):
    context = {}
    if request.method == 'POST':
        is_ajax = request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'
        if is_ajax:
            context = {}
            
            # Update the expression if it's valid
            try:
                print('---------------------------------')
                print('POST[math-input]: {0}'.format(request.POST['math-input']))
                print('POST[time]: {0}'.format(request.POST['time']))
                data = request.POST['math-input']
                core.max_time = int(request.POST['time'])
                print('---------------------------------')
                
                context = dispatch_expression(data)
            except Exception as exc:
                # exc_type, exc_obj, exc_tb = sys.exc_info()
                # fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
                # print(exc_type, fname, exc_tb.tb_lineno)
                # print("Exception: {0}".format(exc))
                
                traceback.print_exc()
                context = {'result': 'Expresie invalidă!'}
            return JsonResponse(context, status=200)
    
    template = loader.get_template('home.html')

    return HttpResponse(template.render(context, request))

基本上,dispatch_expression(data)正在执行所有算法。我可以修改该函数以处理产量,没有任何问题,但我不知道在完成后如何发送每个步骤。

我听说过异步,但互联网上的任何例子都对我没有帮助。 我尝试了StreamingHttpResponse,但是也没有用。

python django ajax async-await

评论


答: 暂无答案