2017-11-09 6 views
0

いくつかの入力を求めてから大文字で返すビューを作成したいと思います。私はSend Data from a textbox into Flask?の指示に従った。Flask POSTリクエストが結果を返す代わりにメインWebページに戻る

このアプリは、PhPanelを使用してPhPanelでexample.com/formにホストされています。 をクリックしてを送信すると、example.comに送信されます。私がリダイレクトされる前に、example.com/formのテキストに何も起こりません。

私は間違っていますか?なぜ私はリダイレクトされていますか?

templates/form.html

<form action="." method="POST"> 
    <textarea name="text"></textarea> 
    <input type="submit"> 
</form> 

form.py

from flask import Flask, request, render_template 

app = Flask(__name__) 

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

@app.route('/', methods=['POST']) 
def form_post(): 
    return request.form['text'].upper() 

答えて

1

あなたが続い答えはどちらもルートでホストされていないアプリケーションのための問題がありました。 (彼らは今編集されています)

あなたのアプリは/formでホストされています。フォームのactionは絶対パスでなければなりません。相対パスではありません。 URLを生成するには常にurl_forを使用してください。この問題は避けてください。

<form action="{{ url_for('form_post') }}" method=post> 

2つのビューが同じURLを共有しているため、actionは省略できます。この場合の一般的なパターンは、1つのビューを使用してGETおよびPOSTを処理することです。

@app.route('/', methods=['GET', 'POST']) 
def index(): 
    if request.method == 'POST': 
     return request.form['text'].upper() 

    return render_template('index.html') 
関連する問題