django rest框架中的自定义403错误页面

Custom 403 error page in django rest framework

我试图通过在 ulrs.py handler403 = 'my_app.views.handler403'.

中声明来覆盖 django rest 框架的默认 403.html 模板

并且在应用的 views.py 中:

def handler403(request, exception, template_name='403.html'):
    response = render_to_response('403.html', {})
    response.status_code = 403
    return response

模板的目录包含在 settings.py 中的 TEMPLATE_DIRS 中。 但是,向具有 IsAdminUser 权限的端点发出请求,呈现默认的 drf 模板。

与 404 异常完全相同的 程序工作得很好。

我在网上看到的任何答案都没有帮助我解决问题。

它不起作用,因为 DRF returns json 响应不呈现模板。

试试这个:

from django.shortcuts import render
def handler403(request, exception, template_name='403.html'):
    return render(request, '403.html')

其实很简单:

您必须覆盖 'custom_exception_handler' 的 DRF,如下所示:

from Django.shortcuts import render_to_response

def custom_exception_handler(...):
    response = render_to_response('path/to/template/403.html', {})
    response.status_code = 403
    return response