2017-09-22 6 views
-1

私はhtmlのラベルを持つフラスコのアプリケーションを開発します。ラベルのテキストはフォーム内にあり、ユーザー入力時にjavascriptを介して変更されます。しかし、フォームが提出された場合、私はフラスコルートを呼び出し、ラベルテキストを取得/要求したいと思います。リクエストは範囲やドロップダウンで動作しますが、何らかの理由でラベルには含まれません。私は何が欠けていますか?フラスコからのhtmlラベルのテキストをリクエストする

@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') 

Iのいずれかmean_sumかの値として "なし" を取得しません悪い要求ページ。

 <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> 

完全な形式は次のとおりです:

HTMLは次のようになります

答えはコメント(感謝のコメンター)である
<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

はあなたの完全なHTMLを表示することができます

? – lapinkoira

+1

あなたの質問は理にかなっていません。ラベルはユーザーに表示するためのもので、データを送信するためのものではありません。データをバックエンドに送信する場合は、入力を使用します。 –

+0

私はあなたのデータがフォーム内にあると思う['sumofspending'] – lapinkoira

答えて

0

真実ですが、「spend_per_month」という隠れた入力を追加して、ユーザーがラベルを変更したときに更新されるようにすることができます。入力として残りのパラメータと共に送信されます。

<input type="hidden" name="spend_per_month" value="" /> 

また、次のように実行することもできます。 jQueryのval()メソッドを使用して:

$("form").on('submit', 
      function() { 
       $('input[type="hidden"][name="spend_per_month"]') 
        .val($("#spend_per_month_label").text()); 
      }); 

は(あなたはそれがラベルではなく、非表示の入力だそれを明確にするためにラベル要素のidを編集したい場合があります。)

0

ダニエルローズマン:

ラベルは物を表示するためのラベルですユーザーには、 のデータを送信するためのものではありません。データをバックエンドに送信する場合は、 入力を使用します。

したがって、ラベルを要求することは可能も賢明でもありません。 JavaScriptでの計算は、Pythonでサーバー上で再度実行する必要があります。

関連する問題