如何在 Django 中创建自定义 403 页面?
Posted
技术标签:
【中文标题】如何在 Django 中创建自定义 403 页面?【英文标题】:How does one create a custom 403 page in Django? 【发布时间】:2012-02-12 20:13:38 【问题描述】:按照此文档 (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 页面仅显示为与我的模板相反。
我是否忘记执行某些操作?谢谢。
【问题讨论】:
【参考方案1】:handler403
是开发版中的新名称。如果您使用的是旧版本 (
如here 所述,在旧版本中有一些方法可以实现这一点。它涉及一个新的中间件、一个自定义异常和HttpResponseForbidden。不过,不知道它与您项目的其余部分的集成效果如何...
【讨论】:
啊,我用的是1.2.3。这是有道理的。 如果您使用其中一个 Web 服务器,我认为您可以使用 apache、nginx 或类似服务器配置自定义服务器。 澄清一下,这是在 Django 1.4 或更高版本中【参考方案2】:如果返回的页面大小小于 512 字节,Google Chrome 会将其替换为通用页面。他们对 404 响应也是如此。
Internet Explorer 做同样的事情。
如果您的响应大于 512 字节,那么一切都会好起来的。
【讨论】:
谢谢。我不知道。尽管如此,在我将页面设置为 >512 字节后,模板仍然没有呈现(我在标记中用超过 512 位数字填充页面 - 一个字符是一个字节对吗?)。
查看下面的 mgibsonbr 响应,您运行的是什么版本的 django?以上是关于如何在 Django 中创建自定义 403 页面?的主要内容,如果未能解决你的问题,请参考以下文章