【发布时间】:2021-06-12 07:29:52
【问题描述】:
我的页面上有两个表单,每个表单都有自己的字段和提交按钮,但每当我使用其中任何一个时,它们总是会检查整个页面字段,而不仅仅是它们包含的表单...
simulator.html有两种形式,第一种是这样的:
<div class="forms">
<div class="form-1">
<form method="post" action="{{ url_for('core.simulator') }}">
<div class="container">
<div class="row g-3">
<div class="col-sm-3">
<label class="form-label"><b>Capital:</b></label>
<input type="text" class="form-control" name="capital_html" required>
</div>
<div class="col-sm-3">
<label class="form-label"><b>Price:</b></label>
<input type="text" class="form-control" name="price_html" required>
</div>
</div>
</div>
<br>
<div class="d-grid gap-2 d-md-flex justify-content-md-start">
<button id="btn" type="submit" class="btn btn-info">Launch simulation!</button>
</div>
</form>
<br>
<p>Units to purchase: <b>{{simulation_units}}</b>
</div>
</div>
第二个是这样的:
<h3> Screener</h3>
<div class="forms">
<div class="form-2">
<form method="post" action="{{ url_for('core.simulator') }}">
<div class="container">
<div class="row g-3">
<div class="col-sm-3">
<label class="form-label"><b>Ticker:</b></label>
<input type="text" class="form-control" name="ticker_symbol_html" placeholder="Enter Ticker Symbol" required>
</div>
</div>
</div>
<br>
<div class="d-grid gap-2 d-md-flex justify-content-md-start">
<button id="btn" type="submit" class="btn btn-info">Launch!</button>
</div>
<p>Symbol <b>{{simulation_symbol}}.
</form>
</div>
</div>
views.py 文件有每个的后端代码,第一个是这样的:
def capital_simulator():
if request.method == 'POST':
simulation_capital = request.form.get('capital_html', '')
simulation_price = request.form.get('price_html', '')
try:
simulation_units = math.floor(float(simulation_capital) / float(simulation_price))
except KeyError:
simulation_units == 0
return render_template('simulator.html',form1=form,capital_html=simulation_capital,price_html=simulation_price,simulation_units=simulation_units)
第二个表单后端脚本是这样的:
def screener():
if request.method == 'POST':
ticker_symbol = request.form.get('ticker_symbol_html', '')
return render_template('simulator.html',ticker_symbol=ticker_symbol_html,ticker_symbol=simulation_symbol)
我认为通过专门调用提到的字段并将它们包含到表单类中,我会避免整体验证,但现在我无法让提交按钮专注于他们自己的表单。请问如何解决这个问题?
【问题讨论】:
-
您的
<form>标签是相同的。您的后端如何知道提交了哪个表单? -
@TimRoberts,你的意思是和?还是我看错地方了?
<div>标签在表单提交中不起作用。<form>标签指示请求被发送到哪里,<input>被发送。鉴于此,您的后端如何知道提交了哪个表单?@TimRoberts ,好的,我现在了解错误,请问如何解决?我认为simulation_capital = request.form.get('capital_html', '')足以说明提要的去向...不,浏览器只会向您发送单击按钮的表单内容。您不会获得页面上的所有表单。
标签: python flask bootstrap-4