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

时间:2012-01-18 02:49:38

标签: django http-status-code-403

遵循此文档(https://docs.djangoproject.com/en/dev/topics/http/views/#customizing-error-views),我正在尝试为我的Django应用程序创建自定义错误403页。

我在URLConf中创建了一个错误处理程序:

handler403 = 'courses.views.error403'

我还创建了一个处理错误403的视图,名为error403:

def error403(request):
    '''
    Default view for error 403: Inadequate permissions.
    '''
    return render_to_response('utility/mustLogin.html', {'user': request.user})

但是,此视图根本不呈现。当我故意发出错误403时,默认浏览器403页面仅显示而不是我的模板。

Default browser 403

我忘记执行某些操作了吗?谢谢。

2 个答案:

答案 0 :(得分:5)

handler403是开发版中的新功能。如果您使用的是旧版本(< = 1.3),则此选项尚未实现。

有些方法可以在旧版本中完成,如here所述。它涉及一个新的中间件,一个自定义异常和HttpResponseForbidden。不知道它会与你项目的其他部分整合得多好,但是......

答案 1 :(得分:4)

如果返回的页面大小小于512字节,则Google Chrome会将其替换为通用版。他们也会对404回复做同样的事情。

值得一提的是Internet Explorer做同样的事情。

如果你的回答大于512字节,那么一切都会很好。