在 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
函数。该函数 应该有两个参数, request
和 exception
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)
我遵循这个
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
函数。该函数 应该有两个参数, request
和 exception
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)