我开发了一个在html中有标签的烧瓶应用程序。标签文本位于表单内,并通过用户输入的javascript进行更改。但是如果表单已提交,我会调用烧瓶路径并希望获取/请求标签文本。请求适用于范围或下拉列表但由于某种原因它不与标签一起使用。我错过了什么?
这是有效的:
@app.route("/estimator/", methods=['GET', 'POST'])
def estimator():
if request.method == 'POST':
mmm_es.online = float(request.form['range_on'])
什么不起作用:
@app.route("/estimator/", methods=['GET', 'POST'])
def estimator():
if request.method == 'POST':
mean_sum = request.form['spend_per_month']
或
mean_sum = request.form.get('spend_per_month')
我要么将“none”作为mean_sum的值或错误的请求页面。
html看起来像这样:
<div class="col-sm-4">
<label> Spending gesamt: </label>
<input type="text" id="sumofspending" size=4 value={{ gesamt_sum }}> T€ </input>
Spending pro Monat: <label style="font-weight:normal" id="spend_per_month" name="spend_per_month"> {{ mean_sum }} T€ </label>
</div>
<div class="col-sm-7">
<label> Online: </label>
<input type="range" name="range_on" min="0" max="10000" step="1" value="{{ online }}" id="range_online" onmousemove="update_from_rangetext(range_online)"/>
</div>
完整表格是:
<form onsubmit="showloader()" action="/estimator/" method="POST" role="form" class="form-horizontal" style="display: inline;">
<div class="form-group">
<div class="row">
<div class="col-sm-4">
<label for="sel1">Geschäftsbereich:</label>
<select class="form-control" id="pg" name="pg" onchange="this.form.submit()">
{% for pg_feature in pg_features %}
<option value="{{ pg_feature }}" {% if pg_feature==pg_select %} SELECTED {% endif %}>{{ pg_feature }}</option>
{% endfor %}
</select>
</div>
<div class="col-sm-3">
<label> GWE jetzt (%): </label> <br>
<input type="text" name="GWE_jetzt" style="width:40px" value="{{ gwe_jetzt }}">
</div>
<div class="col-xs-12" style="height:20px;"></div>
<!--div class="col-xs-12" style="height:25px;"> <label> KPIs jetzt: </label> </div-->
<div class="col-sm-4">
<label> Anfangsmonat: </label>
<select class="form-control" id="start_month" name="start_month" onchange="update_spends_per_month()">
<option value="Januar"> Januar </option>
<option value="Februar"> Februar </option>
<option value="März"> März </option>
<option value="April"> April </option>
<option value="Mai"> Mai </option>
<option value="Juni"> Juni </option>
<option value="Juli"> Juli </option>
<option value="August"> August </option>
<option value="September"> September </option>
<option value="Oktober"> Oktober </option>
<option value="November"> November </option>
<option value="Dezember"> Dezember </option>
</select>
</div>
<div class="col-sm-4">
<label> Endmonat: </label>
<select class="form-control" id="end_month" name="end_month" onchange="update_spends_per_month()">
<option value="Januar"> Januar </option>
<option value="Februar"> Februar </option>
<option value="März"> März </option>
<option value="April"> April </option>
<option value="Mai"> Mai </option>
<option value="Juni"> Juni </option>
<option value="Juli"> Juli </option>
<option value="August"> August </option>
<option value="September"> September </option>
<option value="Oktober"> Oktober </option>
<option value="November"> November </option>
<option value="Dezember"> Dezember </option>
</select>
</div>
<!--div class="col-sm-3">
<label> GMB (%): </label>
<!--input type="text" name="GMB_jetzt" style="width:40px" value="{{ gmb_jetzt }}"-->
<!--input type="text" name="GMB_jetzt" style="width:40px" value=0>
</div>
<div class="col-sm-3">
<label> KB (%): </label>
<input type="text" name="KB_jetzt" style="width:40px" value=0>
</div-->
<div class="col-xs-12" style="height:20px;"></div>
<div class="col-sm-4">
<label> Spending gesamt: </label>
<input type="text" id="sumofspending" name="sumofspending" size=4 value={{ gesamt_sum }}> T€ </input>
Spending pro Monat: <label style="font-weight:normal" id="spend_per_month" name="spend_per_month"> {{ mean_sum }} T€ </label>
</div>
<div class="col-sm-5">
<button type="button" size=1 onclick="update_from_total()"> Gesamtspending prozentual auf genutzte Medien verteilen </button>
</div>
<!--div class="col-sm-4">
<label> In Prozent: </label>
<input type="checkbox" name="inprozent" id="inpercent" checked>
</div-->
<div class="col-xs-12" style="height:20px;"></div>
<div class="col-sm-7">
<input type="checkbox" name="gesamtprozent" value="gesamt" id="gesamtfest" {{ 'checked="checked"' if gesamt_checked else "" }} /> Gesamt fest
<br> </br>
</div>
<div class="col-sm-4">
</div>
<div class="col-sm-7">
<label> TV: </label>
<input type="range" name="range_tv" min="0" max="10000" step="1" value="{{ tv }}" id="range_tv" onmousemove="update_from_rangetext(range_tv)"/> </input>
</div>
<div class="col-sm-4">
<input type="text" id="text_tv" size=1 onkeyup="update_from_rangetext(text_tv)" value="{{ tv }}"> </input> <label> T€ - </label>
<input type="text" id="percent_tv" size=1 onkeyup="update_from_rangetext(percent_tv)" value="33"> </input> <label> % </label>
</div>
<!--div class="col-sm-2">
<label id="percent_tv"> </label> %
</div-->
<div class="col-sm-7">
<label> Online: </label>
<input type="range" name="range_on" min="0" max="10000" step="1" value="{{ online }}" id="range_online" onmousemove="update_from_rangetext(range_online)"/>
</div>
<div class="col-sm-4">
<input type="text" id="text_online" size=1 onkeyup="update_from_rangetext(text_online)" value="{{ online }}"> </input> <label> T€ - </label>
<input type="text" id="percent_online" size=1 onkeyup="update_from_rangetext(percent_online)" value="33"> </input> <label> % </label>
</div>
<div class="col-sm-7">
<label> Publikumszeitschriften: </label>
<input type="range" name="range_pz" min="0" max="10000" step="1" value="{{ pz }}" id="range_pz" onmousemove="update_from_rangetext(range_pz)"/>
</div>
<div class="col-sm-4">
<input type="text" id="text_pz" size=1 onkeyup="update_from_rangetext(text_pz)" value="{{ pz }}"> </input> <label> T€ - </label>
<input type="text" id="percent_pz" size=1 onkeyup="update_from_rangetext(percent_pz)" value="33"> </input> <label> % </label>
</div>
<div class="col-sm-7">
<label> Radio: </label>
<input type="range" name="range_radio" min="0" max="10000" step="1" value="{{ radio }}" id="range_radio" onmousemove="update_from_rangetext(range_radio)"/>
</div>
<div class="col-sm-4">
<input type="text" id="text_radio" size=1 onkeyup="update_from_rangetext(text_radio)" value="{{ radio }}"> </input> <label> T€ - </label>
<input type="text" id="percent_radio" size=1 onkeyup="update_from_rangetext(percent_radio)" value="0"> </input> <label> % </label>
</div>
<div class="col-sm-7">
<label> Kino: </label>
<input type="range" name="range_kino" min="0" max="10000" step="1" value="{{ kino }}" id="range_kino" onmousemove="update_from_rangetext(range_kino)"/>
</div>
<div class="col-sm-4">
<input type="text" id="text_kino" size=1 onkeyup="update_from_rangetext(text_kino)" value="{{ kino }}"> </input> <label> T€ - </label>
<input type="text" id="percent_kino" size=1 onkeyup="update_from_rangetext(percent_kino)" value="0"> </input> <label> % </label>
</div>
<!--div class="col-sm-7">
<label> Mobile: </label>
<input type="range" name="range_mobile" min="0" max="1000" step="1" value="{{ mobile }}" id="range_mobile" onmousemove="update_from_rangetext(range_mobile)"/>
</div>
<div class="col-sm-2">
<input type="text" id="text_mobile" size=1> </input> <label> T€ </label>
</div-->
<div class="col-sm-7">
<label> Zeitungen: </label>
<input type="range" name="range_tz" min="0" max="10000" step="1" value="{{ tz }}" id="range_tz" onmousemove="update_from_rangetext(range_tz)"/>
</div>
<div class="col-sm-4">
<input type="text" id="text_tz" size=1 onkeyup="update_from_rangetext(text_tz)" value="{{ tz }}"> </input> <label> T€ - </label>
<input type="text" id="percent_tz" size=1 onkeyup="update_from_rangetext(percent_tz)" value="0"> </input> <label> % </label>
</div>
<div class="col-sm-7">
<label> Plakat: </label>
<input type="range" name="range_ooh" min="0" max="10000" step="1" value="{{ ooh }}" id="range_ooh" onmousemove="update_from_rangetext(range_ooh)"/>
</div>
<div class="col-sm-4">
<input type="text" id="text_ooh" size=1 onkeyup="update_from_rangetext(text_ooh)" value="{{ ooh }}"> </input> <label> T€ - </label>
<input type="text" id="percent_ooh" size=1 onkeyup="update_from_rangetext(percent_ooh)" value="0"> </input> <label> % </label>
</div>
<div class="col-sm-7">
<label> Werbesendungen: </label>
<input type="range" name="range_ws" min="0" max="10000" step="1" value="{{ ws }}" id="range_ws" onmousemove="update_from_rangetext(range_ws)"/>
</div>
<div class="col-sm-4">
<input type="text" id="text_ws" size=1 onkeyup="update_from_rangetext(text_ws)" value="{{ ws }}"> </input> <label> T€ - </label>
<input type="text" id="percent_ws" size=1 onkeyup="update_from_rangetext(percent_ws)" value="0"> </input> <label> % </label>
</div>
</div>
</div>
<div class="row">
<button type="submit" class="btn btn-info btn-lg">Schätze KPI's </button>
</div>
</form>
答案 0 :(得分:1)
一切都是真的,但只是说你可以添加一个名为'spend_per_month'的隐藏输入,并确保在用户更改标签时更新它。作为输入,它将与其余参数一起提交。
<input type="hidden" name="spend_per_month" value="" />
您也可以在提交时执行此操作,例如:使用val()
方法使用jQuery:
$("form").on('submit',
function() {
$('input[type="hidden"][name="spend_per_month"]')
.val($("#spend_per_month_label").text());
});
(您可能希望编辑标签元素的ID以使其清除标签,而不是隐藏的输入。)
答案 1 :(得分:0)
答案在评论中(感谢评论者):
丹尼尔罗斯曼:标签用于向用户显示内容,但不适用于用户 提交数据。如果要将数据发送到后端,请使用 输入
因此,申请标签既不可行也不明智。 javascript中的计算必须在python中的服务器上再次完成。