2017-05-23 9 views
0

WTForms-JSON docs here.WTForms-JSONは

これは私の周り私の頭をラップすることはできません地獄からのバグされているフォームデータを受信して​​いません。

私はPostman JSON POSTから完全に正常に機能する簡単なAPIハンドラを持っています。

ただし、データをWebフォームにプラグインすると、JSONはすべて空になります。たとえば、次のように

162.249.161.234 - - [23/May/2017 10:52:55] "POST /submitworkorder HTTP/1.1" 200 - 
{'customer': None} 

私のフラスコは次のとおりです。

@app.route('/') 
    def index(): 
     form = SubmitWorkorderForm.from_json(request.json) 
     print form.data 
     return render_template('submitworkorder.html', form = form) 

    @app.route('/submitworkorder', methods=['POST']) 
    def submitworkorder(): 
     form = SubmitWorkorderForm.from_json(request.json) 
     print form.data 
     if form.validate_on_submit(): 
      customer = form.customer.data 
      return jsonify({'customer' : customer }) 

そして、私のHTML:

<div class="container"> 
<form class="form-inline"> 
    {{ form.customer }} 
    {{ form.hidden_tag() }} 

    <input type="submit" value="go"/> 
</form> 
<br> 
<div id="successAlert" class="alert alert-success" role="alert" style="display:none;"></div> 
<div id="errorAlert" class="alert alert-danger" role="alert" style="display:none;"></div> 

最後に私のJS:

$(document).ready(function() { 
    console.log("form Data:", $('form').serialize()) 
    $.ajax({ 
      type: "POST", 
      dataType: "json", 
      url : "/submitworkorder", 
      data : $('form').serialize(), 
      success: function (data) { 
         if (data.error) { 
     $('#errorAlert').text(data.error).show(); 
     $('#successAlert').hide(); 
    } 
    else { 
      $('#successAlert').text(data.customer + 'successfully created.').show(); 
    $('#errorAlert').hide(); 
    } 
      } 
     }); 

    }); 

私が働いてきましたこれはいいえの8時間のよりよい部分のためにこれ全く進歩しない。どんな助けもありがとうございます。

答えて

0

これは、いくつかの古いドキュメントが浮遊していることが原因です。 WTFormsは、の場合、にはfrom_jsonまたはrequest.jsonがもう必要なく、シリアライズされたJSONの処理をサポートしています。

フォームをインポートしてインスタンス化するだけです。

固定コードは次のように:

@app.route('/') 
    def index(): 
    form = SubmitWorkorderForm.from_json() 
    print form.data 
    return render_template('submitworkorder.html', form = form)