【问题标题】:Flask POST request returning to main webpage instead of returning resultFlask POST 请求返回主网页而不是返回结果
【发布时间】:2018-04-21 20:38:33
【问题描述】:

我想写一个视图,请求一些输入,然后以大写形式返回。我按照Send Data from a textbox into Flask? 中的说明进行操作。

该应用通过 cPanel 使用 Phusion Passenger 托管,地址为 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()

【问题讨论】:

    标签: python flask


    【解决方案1】:

    您遵循的两个答案都存在未托管在根目录下的应用程序的问题。 (它们现在已被编辑。)

    您的应用托管在 /form。表单的action 应该是绝对路径,而不是相对路径。始终使用url_for 生成 URL,您将避免此问题。

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

    由于您的两个视图共享相同的 URL,action 可以省略。在这种情况下,一种常见的模式是使用一个视图来处理 GET 和 POST。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 2017-03-30
      • 2021-06-26
      • 2023-04-05
      • 2021-08-10
      • 1970-01-01
      相关资源
      最近更新 更多