2016-08-19 13 views
0

単純なHTMLフォームをページに作成しましたが、フォームからすべてのデータを集めてJSONに変換し、そのページを新しいページに表示したいと思います。私はこのデータを保存する必要はありませんし、データベースを保存したいのであれば、それを使っている人がそのデータをコピーして別のものに貼り付けることができるように、JSON形式の新しいページに吐き出してください。Flaskを使用して新しいページにHTMLフォームデータを表示する

{% extends "layout.html" %} 
    {% block content %} 
     <div class="container"> 
     <form action="/display" method="post" id="employForm" 
     <fieldset> 
     <label>First Name 
      <input type="text" name="firstName" placeholder="Joe" required> 
     </label> 
     <label>Last Name 
      <input type="text" name="lastName" id="lastName" placeholder="Schmoe" required> 
     </label> 

     <label> 
     Department 
      <select name="department" required> 
      <option value="sales">Sales</option> 
      <option value="marketing">Marketing</option> 
      <option value="developer">Developer</option> 
      <option value="business">Business Relations</option> 
      <option value="sysAdmin">Systems Administration</option> 
      <option value="drone">Drone</option> 
      </select> 
     </label> 
      ... goes on 
     </fieldset> 
     <button class="button-primary" type="submit" value="Submit" form="employForm">SUBMIT!</button> 
    </form> 
    </div> 
    {% endblock %} 

形式はビットよりも長いと、フォームデータのいくつかの種類が含まれています。私はフラスコを使用してい

は、ここで私はそれが別の基本的なレイアウトのページを拡張作られたHTMLフォームです。ここにサーバー側のもの(私が作ったフラスコアプリ):

from flask import Flask, render_template, request, jsonify 

app = Flask(__name__) 

@app.route('/') 
def hello(): 
    return render_template('home.html') 

@app.route('/display', methods=["GET", "POST"]) 
def display(): 
    result = request.form 
    return render_template('display.html', result=result) 


if __name__ == "__main__": 
    app.run(host='0.0.0.0') 

私は近くにいるように感じる。現時点では、私がヒットした後、私は表示ページにリダイレクト提出し、それが(明らかに、入力回答に基づいて、特定のデータ変更)は、次のようなものをプリントアウト:私はかなりのやった

ImmutableMultiDict([('startDate', u'2016-08-03'), ('employmentStatus', u'intern'), ('firstName', u'Hola'), ('lastName', u'Schmoe'), ('department', u'marketing'), ('location', u'SanFran'), ('inNYC', u'Yes'), ('requests', u'Blah blah try this.')]) 

私が遭遇した問題は、フォーム全体ではなくフォームから1つまたは2つのキーを集めるだけの例を提供しているということです。

さらに、私の特定の目的のために、データはJSONとして返され、display.htmlページに表示されることを強くお勧めします。

How to post data structure like json to flask?

Getting form data from html form using flask and python

Flask request and application/json content type

Send Data from a textbox into Flask?

はどれガイダンスがある:

参考のために、ここで私はそれを見ての質問のいくつかは非常に助けにはならなかったですとても有難い。ありがとうございました!

私はあなたがそれを使用することができます...あなたがjsonifyインポート見る...

@app.route('/display', methods=["GET", "POST"]) 
def display(): 
    return jsonify(request.form) 

か、あなたのテンプレートに

{{ result | tojson }}

または

をtojsonフィルタを使用することができ

+0

これだけなら、Flaskは必要ありません。 HTMLとJavaScriptを使ってすべてを行うことができます。 – dirn

+0

あなたは何を意味するのか説明できますか? POSTの代わりにGETを使用し、JavaScriptでクリックイベントを割り当てることについて話していますか?もしそうなら、私はそのオプションについて考えましたが、最終的にはPython/Flaskを使用して練習したいと決めました。また、これは後でもっと複雑なプロジェクトに変わるかもしれないので、私はFlaskを使う方が良い考えだと決めました。 – RHdev

+0

いいえ、フォームフィールドをページにJSONとして表示している場合は、HTTPリクエストを行う必要はありません。JavaScriptを使用してフォーム提出を取得し、フィールドをJSONに変換することができます([jQueryの 'serializeArray'](http://api.jquery.com/serializeArray/)など)。 – dirn

答えて

0

result = json.dumps(request.form)

これらは機能します。

+0

2番目のオプションを試してみましたが、うまくいきました。ありがとうございました!私は他のオプションを少し試してみて、私のフィードバックを与えます。 – RHdev

関連する問題