【问题标题】:Storing error codes and messages globally in Django在 Django 中全局存储错误代码和消息
【发布时间】:2012-08-22 10:30:24
【问题描述】:

我有一个 Django 应用程序,当它出现一些用户错误(即 URL 不存在或没有权限)时,它会执行 messages.add_message。该消息包含指向/error/<id> 错误说明的链接。如果我想重新使用错误 ID 和消息,我该怎么做?我在想这样的事情:

errors = {1 : "Error message for error id 1", 2 : "Error message for error id 2"}

我可以在哪里存储这样的字典,以便我可以在所有视图中访问它?

【问题讨论】:

  • 你能澄清你所说的“再利用”是什么意思吗?您想在哪里设置它以及在哪里阅读和显示它(我假设这就是您所说的重用)。
  • 通常错误信息存储在日志文件中,格式可以是你喜欢的任何格式,但你也可以将它们存储在数据库中。
  • 不知道需要在哪里设置。在视图中读取字典,并将错误 id 和文本提供给messages.add_message,然后在模板中显示。
  • @user1585811 这不是 django 错误,而是我正在设置和显示的错误,与系统错误无关。这些是给用户的验证错误,而不是系统。
  • 好吧,存储在数据库中是一种选择,但它会带来性能问题,您可以尝试的另一件事是将其存储在缓存中。

标签: python django dictionary error-handling


【解决方案1】:

您应该创建一个映射到url 的视图,例如/error/<id>。然后在视图内部有字典 errors = {1 : "Error message for error id 1", 2 : "Error message for error id 2"} 或者在一个名为 error_codes.py 的文件中,并将其导入到您的 views.py 中。然后简单地解析传入url<id> 并返回带有正确error codetemplate

为确保此错误代码字典适用于您的所有请求,请使用 write custom Django Middleware。实现process_template_response(self, request, response) 并通过添加error_code_dictionary 来更改response.context_data。将确保每个响应在模板和其他地方呈现的 http 响应中都有可用的错误字典。

【讨论】:

  • 我想在用户单击“更多信息”之前在页面上显示错误消息。例如,当表单提交错误时,此消息将显示"Error code 15: Incorrect filetype"。 “错误代码 15”是指向错误说明页面的链接。我真的需要能够在我的应用程序的 any 视图中访问错误号和消息。
  • 我编辑了我的答案。使用Django Middleware 访问页面中的所有错误代码,然后使用视图链接error code urls
猜你喜欢
  • 1970-01-01
  • 2012-01-25
  • 2011-07-10
  • 2018-02-02
  • 1970-01-01
  • 2015-03-08
  • 2018-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多