如果视图在 Django 中失败,如何创建默认错误装饰器?

Posted

技术标签:

【中文标题】如果视图在 Django 中失败,如何创建默认错误装饰器?【英文标题】:How to create a default error decorator if a view fails in Django? 【发布时间】:2019-12-08 02:14:39 【问题描述】:

我正在考虑一个要实施的想法。通常,我只是将我的视图函数代码包装在一个 try-catch 块中,所以如果视图失败,我会渲染一个带有错误名称的默认错误页面。 我想知道,我可以创建一个装饰器或类似的单线代码,我可以在其中执行相同的操作(如果函数中的代码崩溃,请使用错误代码加载错误页面)。请注意,我已经在使用 @login_required 装饰器

【问题讨论】:

【参考方案1】:

没有必要这样做。 Django 已经捕获了所有错误。您只需在模板目录的顶层提供一个自定义 500.html 模板 - 请参阅 the docs。

【讨论】:

我无法使用此方法显示我的自定义错误代码和名称。 为什么你认为你不能? 说实话,我不知道实现这个想法。请您指出正确的方法吗?您想显示的任何代码。【参考方案2】:

是的,Daniel 是对的,只是添加了指向正确帖子的链接。我们可以使用以下答案中指出的模板处理器,并传递状态码。 Django raising 404 with a message

或者我们可以创建一个新的默认错误页面并像他们在下面的帖子中那样传递错误。 How to return 404 page intentionally in django

【讨论】:

以上是关于如果视图在 Django 中失败,如何创建默认错误装饰器?的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的 Django 应用程序的“评论”视图中修复此错误?

Django 1.6:如何访问视图中的静态文件

Django,自定义身份验证登录。身份验证失败时如何显示错误消息?

如何使用自定义 django 404 错误视图重定向?

在Django / Python应用程序中设计适当的错误处理代码?

如何在django视图函数中使用全局变量,对所有线程有效。