python - 使用 django 表单进行数学运算并避免重定向
问题描述
我想在 Django 中有一个表格做一些数学运算并吐出一个不会以重定向结束的结果,并在同一页面上给我结果(即不刷新)。
例如:
视图.py:
def collisionrisk(request):
assert isinstance(request, HttpRequest)
form_class = CRMForm
result = ''
if request.method == 'POST':
form = form_class(data=request.POST)
if form.is_valid():
D = form.cleaned_data['D']
B = form.cleaned_data['B']
b = form.cleaned_data['b']
result = D*B+b
return HttpResponse('')
else:
return render(
request,
'Collision_risk.html',
{
'form':form_class,
'result':result
}
)
表格.py:
class CRMForm(forms.Form):
D = forms.DecimalField(required=True)
B = forms.IntegerField(required=True)
b = forms.IntegerField(required=True)
def __init__(self, *args, **kwargs):
super(CRMForm, self).__init__(*args, **kwargs)
self.helper = FormHelper(self)
self.fields['b'].label = 'b'
self.helper.layout = Layout(
Div(
Div('D',css_class='col-lg-offset-2 col-md-offset-2 col-lg-1 col-md-1 col-sm-12 col-xs-12'),
Div('B',css_class='col-lg-1 col-md-1 col-sm-12 col-xs-12'),
Div('b',css_class='col-lg-1 col-md-1 col-sm-12 col-xs-12'),
css_class='row',
css_style='padding-left:50px;padding-right:50px;'
)
)
self.helper.add_input(Submit('submit', 'Submit', css_class='btn-primary outline',action="."))
self.helper.form_method = 'POST'
基本上,在我的模板中,我希望用户点击“提交”,然后数学结果出现在同一页面上的指定 div 中(即直接在按钮下方而不重定向到新页面)。
我可以很容易地在 Jquery 中做到这一点,但我有兴趣了解是否有一种纯 Django 方法可以首先做到这一点。
谢谢各位!
解决方案
if
从语句替换语句
return render(
request,
'Collision_risk.html',
{
'form': form_class,
'result': result
}
)
经过
from rest_framework.response import Response
return Response(request, 'Collision_risk.html', {'result':result})
推荐阅读
- python - 如何找到蒙特卡洛算法中的百分比误差?
- disruptor-pattern - 当生产者比消费者快得多时,为什么 Disruptor 会持有大量数据?
- java - 如何使用 Sring Boot 读取多部分?
- ruby-on-rails - 如何将 Rails 路由移动到方法中?
- haskell - Coq 提取到 Haskell
- sbt - 使用 sbt 将实现版本插入清单
- python - 如何在 MATLAB 或 Python 中求解大型非线性方程组?
- react-native - React Navigation:Drawer Navigator 在后台显示
- c - 导致堆缓冲区溢出的错误在哪里?
- ios - 如何在另一个 ViewController 中加载 UIViewController XIB?