【发布时间】:2012-06-12 09:50:51
【问题描述】:
我的应用程序使用@app.route 捕获所有 url 请求,但偶尔我会遇到一个错误的 url,我没有匹配的 jinja 文件(但它确实匹配现有的@app.route)。因此,我想将此类请求重定向到该错误 url 的 404 页面。
在返回render_template()之前如何区分“一个jinja文件存在”和“一个jinja文件不存在”?
【问题讨论】:
我的应用程序使用@app.route 捕获所有 url 请求,但偶尔我会遇到一个错误的 url,我没有匹配的 jinja 文件(但它确实匹配现有的@app.route)。因此,我想将此类请求重定向到该错误 url 的 404 页面。
在返回render_template()之前如何区分“一个jinja文件存在”和“一个jinja文件不存在”?
【问题讨论】:
如果找不到模板,Jinja 会抛出异常:TemplateNotFound
所以而不是:
def myview():
return render_template(...)
你可以这样做:
def myview():
try:
return render_template(...)
except TemplateNotFound:
abort(404)
然后按照Flask documentation 中的说明使用自定义错误页面处理 404 错误。不要忘记从flask 导入abort 和从jinja2 导入TemplateNotFound
【讨论】: