Django:在获取POST请求的同时维护服务器端数据?

时间:2017-06-05 14:49:14

标签: python django python-3.x

我是Django的新手,现在我已经完成了7部分教程,我正在尝试在创建自己的应用程序时学习更多内容。

我的应用程序的一部分接受来自用户的输入,然后在产生输出之前需要一些非平凡的服务器端计算(例如,用户将经历一些等待)。因此,我不想一次性计算所有内容,而是希望有几个小表单,每个表单都将数据发送到服务器计算部分并等待它接收下一个。例如:

  

my_app :会有一个表格要求用户输入三个数字,它会从100减去第一个数字,然后将第二个数字加到结果中,最后将新结果乘以第三个数字输入:

     

e.g。

     

我的表格

     

1st:5

     

2ed:7

     

3rd:2

     

结果:(((100-5)+ 7)* 2)= 204

虽然上面的例子很简单,但我正在做的事需要一些时间(但是,如果它不是第一个字段,则取决于前一个结果的结果)。

我在这里学会了如何正确地发布视图帖子: Django: proper way to handle form with POST to the same page

那么当用户为表单的每个部分输入数据时,如何进行此序列计算? (并等到计算上一个结果或直到用户在继续之前发布下一个信息)

1 个答案:

答案 0 :(得分:1)

我的第一个答案是"在会话中存储回复"。所以像这样:

question1.py

if form.is_valid():
    request.session['height'] = height_calc(form.cleaned_data['height'])

question2.py:

if form.is_valid():
    request.session['weight'] = weight_calc(request.session['height'], 
                                            form.cleaned_data['weight'])

question3.py:

if form.is_valid():
    # now we have everything so do the final calculation
    final_result = final_calc(request.session['height'],
                              request.session['weight'],
                              form.cleaned_data['favorite_color'])