这是我创建简单蓝图的方式
from flask import Blueprint, render_template
my_bp_page = Blueprint('my_bp_page', __name__, template_folder='templates')
@my_bp_page.errorhandler(404)
def page_not_found(e):
return render_template('404.html', pageName='my_bp_page.home')
@my_bp_page.route('/home', methods=['GET'], strict_slashes=False)
def home():
return render_template('home.html')
这是我的404.html
{% block title %}Page Not Found{% endblock %}
{% block body %}
<h1>Page Not Found</h1>
<p>What you were looking for is just not there.
<p>
{% if pageName is defined %}
<a href="{{ url_for(pageName) }}">Go Back</a>
{% else %}
<a href="{{ url_for('home') }}">Go Back</a>
{% endif %}
{% endblock %}
在测试时,我尝试使用网址localhost:5000/home/junk
,然后看到
Not Found
The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.
这不是我应该看到的。我应该会看到我的自定义404.html
我在做什么错了?
答案 0 :(得分:1)
问题在于,就Flask而言,/home/junk
路径不属于您的my_bp_page
蓝图。这只是一条未注册任何路径的路径。
蓝图文档的Error Handlers部分(第3段)中提到了此警告。
推荐的解决方案是使用应用程序级错误处理程序,并检查request.path
以自定义处理错误的方式。