如何在 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 页面?的主要内容,如果未能解决你的问题,请参考以下文章

如何在文件夹中创建自定义页面模板

如何在 ionic 2 中创建自定义加载页面

Django中创建自定义标签与过虑器

在 Django Admin 中创建自定义显示字段(models.py 中不存在)

在 IIS 7 中创建自定义 503 页面

如何在 WordPress 中创建自定义可拖动小部件