Django - error_403() 得到了一个意外的关键字参数“异常”

Posted

技术标签:

【中文标题】Django - error_403() 得到了一个意外的关键字参数“异常”【英文标题】:Django - error_403() got an unexpected keyword argument 'exception' 【发布时间】:2018-10-11 19:01:23 【问题描述】:

当不允许用户看到实例的内容时,当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

网址:

handler403 = 'apps_core.core.views.error_403'

观看次数:

def error_403(request):
    data = 
    return render(request,'errors/403.html', data)

【问题讨论】:

遇到的错误可能是有用的信息 【参考方案1】:

403 error view 需要第二个参数,即引发的异常。

要解决它,您可以将代码更改为:

def error_403(request, exception):
    ...

或更一般的东西

def error_403(request, *args, **kwargs):
    ...

【讨论】:

如何将权限代码传递给在权限错误时调用的函数error_403 中的上下文,以便在错误页面中显示这些代码?谢谢。 @shaan 我找不到在模板中显示缺少权限引发PermissionDenied 异常的方法。 谢谢先生。我离开了网格(sometime)所以很晚才看到你的回复。接受这一点真的令人沮丧。我也尝试过使用 Django 会话,但不知何故它非常有问题,数据会间歇性地显示。所以接下来我想为什么不使用 Django permission_denied_message。但在这里,我也遇到了重大问题。如果你能抽出一些时间,你会检查我的查询here吗?非常感谢。

以上是关于Django - error_403() 得到了一个意外的关键字参数“异常”的主要内容,如果未能解决你的问题,请参考以下文章

React.js 使用 JQuery 发布 Django 得到 403

Django_404_403_500页面处理

如何在 Django 中创建自定义 403 页面?

Django-Paypal IPN 403 错误

Django - 403 Forbidden - CSRF 令牌丢失或不正确

Django API Post 方法返回 403 错误