在前面一节,介绍了一下如何主动抛出异常。在Flask中,也可以自定义错误的处理方法,例如如果是404,返回一个404页面。
在main.py
文件的目录下新建一个文件夹,文件夹命名为static
,然后把图片放在这个文件夹里面。
然后在templates
文件夹里新建一个404.html
。在该html中,写入一下内容(其实就是引入图片):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>404</title>
</head>
<body>
<img src="../static/a404page.jpg" alt="404">
</body>
</html>
然后在Flask中定义一个errorhandler
,里面写入状态码404。
当系统出现了404的时候,则会调用404.html
内容:
from flask import Flask, abort, request,make_response,render_template
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'GET':
return render_template("index.html")
if request.method == 'POST':
name = request.form.get('name')
password = request.form.get('password')
if name == 'admin' and password == 'admin123':
return '登录成功'
else:
abort(404)
@app.errorhandler(404)
def handel_404():
return render_template('404.html')
if __name__ == "__main__":
app.run()
注意,这是需要abort
与errorhandler
配合使用。
类似的还有:
from flask import Flask, render_template, abort
app = Flask(__name__)
@app.errorhandler(404)
def page_not_found(error):
return render_template('404.html'), 404
@app.errorhandler(500)
def internal_server_error(error):
return render_template('500.html'), 500
@app.route('/error/<int:code>')
def trigger_error(code):
if code == 400:
abort(400)
elif code == 401:
abort(401)
elif code == 403:
abort(403)
elif code == 404:
abort(404)
elif code == 500:
abort(500)
else:
return "No error triggered"
if __name__ == '__main__':
app.run(debug=True)