我正在学习python,正在尝试建立一个网站。我到了需要处理错误的地步,但我不明白Flask文档中提供的示例:
{ "$lookup": {
"from": "likes",
"let": { "storyID": "$storyID" },
"pipeline": [
{ "$match": { "$expr": { "$eq": ["$$storyID", "$storyID"] }}}
],
"as": "likes1"
}},
{ "$addFields": {
"likes.total": { "$size": "$likes1" },
"likes.byMe": { "$ne": [{ "$indexOfArray": ["$likes1.user.id", user_id] }, -1] }
}},
{ "$project": { "likes1": 0 }}
为什么需要键入{ "$lookup": {
"from": "likes",
"let": { "storyID": "$storyID" },
"pipeline": [
{ "$match": { "$expr": { "$eq": ["$$storyID", "$storyID"] }}},
{ "$facet": {
"total": [{ "$count": "count" }],
"byMe": [{ "$match": { "$expr": { "$eq": ["$user.id", user_id] }}}]
}}
{ "$project": {
"total": {
"$ifNull": [{ "$arrayElemAt": ["$total.count", 0] }, 0 ]
},
"byMe": { "$ne": [{ "$size": "$byMe" }, 0] }
}}
],
"as": "likes"
}},
{ "$unwind": "$likes" }
而不是@app.errorhandler(404)
def not_found(error):
return render_template('error.html'), 404
?
答案 0 :(得分:1)
@app.errorhandler()
未注册常规视图。它注册一个error handler。错误处理程序被传递给错误对象,因此它们可以确定如何最好地产生备用视图。从文档中:
错误处理程序是在引发错误类型时返回响应的函数,类似于视图是在请求URL匹配时返回响应的函数。 它已传递正在处理的错误实例,很可能是
HTTPException
。
(加粗强调)
在request
对象上找不到此错误信息,因为类似的错误是由处理当前请求的普通视图产生的错误引起的。
正常路径为:
abort(404)