在 django url 调度程序中使用 Handler404 导致服务器错误

using Handler404 in django url dispatcher cause server error

我遵循这个 因为我想当 url 不存在时 json 显示错误但是问题是当我在我的中添加 handler404 时我得到服务器错误 500 url调度员 这是我的项目 url :

from django.urls import path, include
from django.conf.urls import handler404
from api.exception import custom404

handler404 = custom404

urlpatterns = [
    path('api/v1/', include('acl.urls')),
]

我的项目文件夹中有 exception.py(靠近 settings.py),其中包含:

from django.http import JsonResponse


def custom404(request):
    return JsonResponse({
        'status_code': 404,
        'error': 'The resource was not found'
    })

我不知道如何解决我的问题

很遗憾,您没有提供太多关于错误回溯的信息。

无论如何,我在您的代码中注意到的第一件事是,您错过了一个 可选参数 custom404 函数。该函数 应该有两个参数, requestexception

def custom404(request, <b>exception=None</b>):
    response = {
        'status_code': 404,
        'error': 'The resource was not found'
    }
    return JsonResponse(<b>response, status=404</b>)

参考
1. Custom Error Views

嗯,django rest 框架是开源的,所以如果你想复制某些行为,你可以阅读代码并挑选你喜欢的。例如,您可以看到 drf docs are located inside exceptions.py inside rest_framework you can look it up here 中提供的一般错误视图(自定义服务器和错误请求错误视图)并了解如何完成。

创建自定义 404 视图,如下所示:

def not_found(request, exception, *args, **kwargs):
    """ Generic 404 error handler """
    data = {
        'error': 'Not Found (404)'
    }
    return JsonResponse(data, status=status.HTTP_404_NOT_FOUND)