python - Flask POST 请求返回主网页而不是返回结果

标签 python flask

我想编写一个请求一些输入然后将其以大写形式返回的 View 。我按照 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()

最佳答案

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

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

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

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

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

    return render_template('index.html')

关于python - Flask POST 请求返回主网页而不是返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47191903/

相关文章:

python - mongoengine 引用字段 mongoengine.errors.ValidationError

python - 如何从python中的异步方法返回值?

python - Flask 和 WSGI 出现间歇性 500 HTTP 错误

python - 如何使用 flask 和 sqlalchemy 进行选择查询?

Python & Pandas - pd.Series int32 和 int64 之间的区别

python - 跟踪上次访问 python 对象的最优雅方法是什么?

python - 在 PyQt 中创建和使用用户定义的槽

python - 没有这样的文件或目录错误

python - 使用 peewee 访问远程 MySQL 数据库

python - 如何在 Flask/SQLAlchemy 中显示包含多对多查询结果的列