Django-error_403()得到了意外的关键字参数'exception'

Fla*_*lan 2 python django

当不允许用户查看实例的内容时,抛出PermissionDenied异常,而不是将其转发到404.html模板,它将出现错误。

详细视图:

class OccurrenceDetail(OccurrenceModel, BaseDetailViewWithLogin):
    permission_required = ('occurrences.see_occurrence')

    def get_object(self, queryset=None):
        perm = self.request.user.has_perm(self.permission_required)
        obj = super(OccurrenceDetail, self).get_object(queryset=queryset)
        if not perm:
            raise PermissionDenied()
        return obj
Run Code Online (Sandbox Code Playgroud)

网址:

handler403 = 'apps_core.core.views.error_403'
Run Code Online (Sandbox Code Playgroud)

观看次数:

def error_403(request):
    data = {}
    return render(request,'errors/403.html', data)
Run Code Online (Sandbox Code Playgroud)

Ral*_*alf 5

403错误视图期望的第二参数,它是凸起的例外。

要解决此问题,您可以将代码更改为:

def error_403(request, exception):
    ...
Run Code Online (Sandbox Code Playgroud)

或更一般的东西

def error_403(request, *args, **kwargs):
    ...
Run Code Online (Sandbox Code Playgroud)