从烧瓶请求html标签文本

时间:2017-09-22 09:06:13

标签: javascript python html flask

我开发了一个在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>

2 个答案:

答案 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中的服务器上再次完成。