【发布时间】:2020-11-23 07:56:51
【问题描述】:
我是 html 和 Django 的新手,并试图让我的表单在用户更改输入时动态自动提交,基本上删除了“提交”按钮。
我的表单有 3 个输入(所有浮点数),它们将通过“some_function()”进行计算。但是为了节省用户时间,我希望它是动态的。因此,没有“提交”。
HTML:
<div class="container">
<h3>Calculator</h3>
<form method="post" >
{% csrf_token %}
{{ form_c.as_p }}
<button type="submit">Submit</button> # <- I would like to remove this
</form>
</div>
如果需要,我的视图如下:
def post(self, request):
form_c = CalculatorForm(request.POST, prefix='form_c')
try:
if form_c.is_valid():
post = form_c.cleaned_data
val1 = float(post.get('val1'))
val2 = float(post.get('val2'))
val3 = float(post.get('val3'))
numbers = some_function(val1, val2, val3)
except:
pass
args = {
'form_c': form_c, 'form_cols': numbers,
}
return render(request, self.template, args)
(编辑)表格:
class CalculatorForm(forms.Form):
val1 = forms.DecimalField(decimal_places=2, min_value=0.0, required=False)
val2 = forms.DecimalField(decimal_places=2, min_value=0.0, required=False)
val3 = forms.DecimalField(decimal_places=2, min_value=0.0, required=False)
【问题讨论】:
-
这是一个javascript问题。您需要您的 JS 进行验证,然后在所有字段都填写并有效后发送请求。但是,如果您在新数据和有效数据的条件下发送该请求,
some_function可能会被调用任意次数。此外,新的有效数据并不总是预期的数据。 -
@Codesidian 所以这对于我目前拥有的东西是不可能的?你知道在 JS 中是如何实现的吗?我以前从未使用过它。干杯
-
不,用你当前拥有的 是不可能的,但是实现你想要的功能将是非常微不足道的。但是,我强调的是更多的设计问题,而不是任何特定于您当前实现的问题。问你是否应该而不是你是否可以。如果 some_function 可以运行任意次数,那么可以确定。它可以安全地使用无意的数据运行吗?每个用户应该运行很多次吗?您请求的功能不受欢迎是有原因的。
标签: python html django dynamic