Django Rest框架中的自定义403错误页面

时间:2018-09-18 14:01:44

标签: django django-rest-framework django-templates http-status-code-403

我试图通过在ulrs.py Bar中声明来覆盖django rest框架的默认403.html模板。

在应用程序的views.py中:

handler403 = 'my_app.views.handler403'

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

针对404异常的完全相同过程非常正常。

我在网络上看到的任何答案都无法帮助我解决问题。

3 个答案:

答案 0 :(得分:3)

实际上很简单:

您必须像下面这样覆盖DRF的“ custom_exception_handler”:

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

此外,别忘了导入

from Django.shortcuts import render_to_response

答案 1 :(得分:0)

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

答案 2 :(得分:0)

尝试一下:

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