如何使用 Python Flask 显示错误页面?

问题描述 投票:0回答:1

我是 Flask 新手,这是这个学校项目所必需的。

我想如果发生意外情况我会显示错误页面。

我尝试过几种方法。

最新的尝试产生此错误: 类型错误:“get_data”的视图函数未返回有效响应。该函数要么返回 None,要么在没有 return 语句的情况下结束。

我认为我的“redirect(url_for("error"))”语句放错了位置。

请问如何显示错误页面?

main.py:

from flask import Flask, render_template, request, redirect, url_for
import os

app = Flask(__name__)

class Api:
    def get_api_key():

        try:
            api_key = os.environ.get('this_key_does_not_exist')
            raise ValueError(f"Invalid value: key not found")

        except TypeError as e:
            return redirect(url_for("error"))

@app.route("/")
def index():
    return render_template("index.html")

@app.route("/get_data", methods=["POST"])
def get_data():
    if request.method == "POST":
        api = Api()
        api.get_api_key

@app.route("/error")
def error():
    return render_template("error.html")

if __name__ == "__main__":
    app.run()

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
  <title>Example</title>
</head>
<body>
   <form action="{{ url_for('get_data') }}" method="POST">
        <label>Please submit</label>
        <input type="submit" value="Submit">
   </form>
</body>
</html>

错误.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
  <title>Example</title>
</head>
<body>
   <p>An unexpected error has occurred.</p>
   <br />
   <p>For assistance, please call 9999 999 999</p>
</body>
</html>
python html flask error-handling
1个回答
0
投票

您看到的错误是因为您的

get_data
函数没有返回有效的响应(在您的情况下,它不会返回任何内容,因为您没有调用该方法)。

此设计存在一些问题:

  • 你不需要检查
    request.method == "POST"
    ,因为它会根据装饰器的参数由 Flask 自动处理。
  • 要定义自定义错误页面/响应,您可以使用 Flask 的错误处理程序。以下是文档以及一些示例。
© www.soinside.com 2019 - 2024. All rights reserved.