Django Rest框架异常指针的位置

2024-10-01 02:33:30 发布

您现在位置:Python中文网/ 问答频道 /正文

DRF文档说一旦设置了异常处理程序,就需要在中定义它设置.py

REST_FRAMEWORK = {
'EXCEPTION_HANDLER': 'my_project.my_app.utils.custom_exception_handler'
}

我的Django项目布局如下:

^{pr2}$

该项目称为后端,应用程序名为connectivity_服务自定义404错误消息.py文件包含处理异常的函数自定义异常处理程序。在

我的设置.py看起来像这样:

REST_FRAMEWORK = {
'EXCEPTION_HANDLER': 'backend.connectivity_service.utils.Custom404ErrorMessage'
}

但是,这会给我显示以下错误消息:

ImportError: Could not import 'backend.connectivity_service.utils.Custom404ErrorMessage' 
for API setting 'EXCEPTION_HANDLER'. ModuleNotFoundError: No module named 
'backend.connectivity_service'.

我做错什么了?在


Tags: 项目pyrestbackend消息处理程序my错误
2条回答

我的猜测是,在将DRF example转换为代码时,您混淆了文本。文件规定:

from rest_framework.views import exception_handler

def custom_exception_handler(exc, context):
# Call REST framework's default exception handler first,
# to get the standard error response.
response = exception_handler(exc, context)

# Now add the HTTP status code to the response.
if response is not None:
    response.data['status_code'] = response.status_code

return response

然后它会告诉您将其添加到您的设置中:

^{pr2}$

请记住,上面的示例具有以下文件夹结构:

“我的项目”>;“我的应用程序”>;“实用工具”>;“自定义异常”处理程序

也就是说:

我的项目文件夹>我的应用文件夹;实用工具.PY>;用于处理异常的已定义函数的名称

我想你就是这样搞糊涂的。因此,您将Custom404ErrorMessage.py放在utils_文件夹中,并尝试导入该文件夹而不是定义的函数本身。当然,除非Custom404ErrorMessage.py是一个类,但我对此表示怀疑,因为您似乎在遵循使用函数的链接DRF示例。在

我想你的客户404错误消息.py包含以下内容:

from rest_framework.views import exception_handler

def custom_exception_handler(exc, context):
....

所以对于你的设置,你的设置.py将如下所示:

REST_FRAMEWORK = {
 'EXCEPTION_HANDLER': 'backend.connectivity_service.utils.Custom404ErrorMessage.custom_exception_handler'
 }

看最后一部分是如何定义函数的?希望有帮助!在

我也有这个问题,你需要解决的是:

  1. 创建实用工具.py在应用程序文件夹中
  2. 在其中定义自定义的“异常”处理程序函数
  3. 在您的设置文件中添加以下“异常处理程序”:“my_app.utils.custom\u异常处理程序'”,无需键入我的项目

相关问题 更多 >