我试图通过在ulrs.py Bar
中声明来覆盖django rest框架的默认403.html模板。
在应用程序的views.py中:
handler403 = 'my_app.views.handler403'
模板的目录包含在settings.py中的TEMPLATE_DIRS中。 但是,向具有 IsAdminUser 权限的端点发出请求,将呈现默认的drf模板。
针对404异常的完全相同过程非常正常。
我在网络上看到的任何答案都无法帮助我解决问题。
答案 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')