Django的REST框架自定义异常处理似乎不像所宣传的那样工作

时间:2019-07-23 23:50:30

标签: django django-rest-framework

2019年7月-使用最新的Django / DRF:

myproj/my_api_app/public_views.py中,我有:

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

myproj/myproj/settings.py中,我有:(是,两次 myproj / myproj

REST_FRAMEWORK = {
    # Use Django's standard `django.contrib.auth` permissions,
    # or allow read-only access for unauthenticated users.
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
    ],
    'DEFAULT_THROTTLE_CLASSES': (
            'rest_framework.throttling.ScopedRateThrottle',
        ),
    'DEFAULT_THROTTLE_RATES': {
        'public_get': '30/minute',
        'user_get': '60/minute'
    },
    'EXCEPTION_HANDLER': 'myproj.my_api_app.public_views.custom_exception_handler'
}

我尝试故意击中不存在的端点,但仍收到默认的404消息。我的设置中有DEBUG=False

我尝试了EXCEPTION_HANDLER的“路径”的每个排列。什么都没有。 EXCEPTION_HANDLER只是被忽略。从未调用过custom_exception_handler

我在做什么错?

1 个答案:

答案 0 :(得分:1)

其余框架异常视图不适用于无效路由。尝试将无效请求发送到API路由以查看其实际效果。