2017-08-07 14 views
1

フラスコを使用してhtmlフォームからデータを取得しようとしています。フォームはウェブサイト上に表示されますが、Pythonを提出すると受信しません。フラスコを使用してフォームからデータを受信

HTMLコード:

<form action="/signup" method="post"> 
    <input type="text" name="email"></input> 
    <input type="submit" value="signup"></input> 
</form> 

Pythonコード:

from flask import Flask, render_template, request, redirect 
app = Flask(__name__) 
@app.route('/') 
def home(): 
    return render_template('home.html') 
@app.route('/about/') 
def about(): 
    return render_template('about.html') 
@app.route('/signup', methods = ['POST']) 
def signup(): 
    email = request.form['email'] 
    print("The email address is '" + email + "'") 
    return redirect('/') 
if __name__ == '__main__': 
    app.run(debug=True) 

APP

--static

----あるmain.css

--templates

---- htmlコード(home.html)

Pythonコード(hello.py)適切な場所にsubmitedされていることを確認するために、フォームのアクションに

+3

例外はありますか? – stamaimer

+0

htmlコードはどこにありますか? – Fejs

+0

は、コードがどこにあるのかを示すように編集します。 – Daniel

答えて

0

使用フラスコのなurl_for。

<form method="post" action="{{ url_for('signup') }}"> 
+0

私は私のpythonコードを変更する必要がありますか?私はしようとしたが、結果を得る。 – Daniel

+0

いいえ、url_forで呼び出された関数がルータに存在することを確認してください – DobleL

+0

どうすればそのことを確認できますか? – Daniel

0

コードは問題なく機能します。 私が変更する唯一のことは、エンドポイントを直接指定するのではなく、url_for()構造を使用することです。 すなわち:あなたの「サインアップ」エンドポイントのGETリクエストを提供しようと、またreturn redirect(url_for('home'))

を使用しています。

  1. あなたのメソッドの引数
  2. に 'GET' を追加、このブロックの下に
  3. if request.method == "POST"if文の下に印刷ブロックを入れreturnに何かを置きます。 (return redirect(url_for('home')),return render_template('xyz.html')など)
関連する問題