Django - 自定义 403 模板
Posted
技术标签:
【中文标题】Django - 自定义 403 模板【英文标题】:Django - custom 403 template 【发布时间】:2015-11-06 00:12:07 【问题描述】:我正在尝试在 Django 1.5 中使用我的 403、404、500 自定义模板。 404 和 500 完美运行,但 403 仍然向我展示了内置的 Django 403 模板。
我将所有三个模板都放在项目的根模板目录中。 它们被命名为:403.html、404.html、500.html
我也尝试过使用:
urls.py:
from django.utils.functional import curry
handler403 = curry(permission_denied, template_name='403.html')
还有: urls.py:
handler403 = 'proj_name.views.my_custom_permission_denied_view'
项目名称/views.py
def my_custom_permission_denied_view(request):
return ethoos_response('403.html', None, request)
这两种方法都不起作用。同样在 404 和 500 中,我没有使用这些方法,只使用模板目录中的模板,并且显示了它们。
根据 Django 的文档,这三个假设都以相同的方式工作。 https://docs.djangoproject.com/en/1.5/topics/http/views/#the-403-http-forbidden-view
我不知道为什么只有 403 没有。 谢谢。
【问题讨论】:
对我有用,应该不需要覆盖任何代码。你的确切 django 版本是什么,你的模板设置是什么样的,你有没有在 403 处理程序中设置断点来查看发生了什么? 我的 Django.version 是 (1, 5, 0, 'final', 0) 。我还没有断点处理程序。 您使用 Django 1.5 的任何特殊原因?在两周的时间内,它会在一整年都不受支持djangoproject.com/download django 中 403 处理程序的最新文档在这里 docs.djangoproject.com/en/1.11/topics/http/views/… 【参考方案1】:对于常规的 403 权限被拒绝页面,创建 403.html
模板应该可以工作。
但是,对于 CSRF 错误(也返回状态码 403),您应该创建一个 403_csrf.html
模板。
在 Django 1.10+ 中创建 403_csrf.html
模板有效。对于早期版本,您必须将 CSRF_FAILURE_VIEW
设置更改为您要使用的视图。
请参阅CSRF docs 了解更多信息。
本周在 Django 开发者邮件列表中,a discussion 讨论了为什么 CSRF 失败视图的行为不同。
【讨论】:
谢谢!就是这样。我还推荐这个解决方案示例:***.com/questions/26925244/…【参考方案2】:您需要使用403_csrf.html
。
【讨论】:
以上是关于Django - 自定义 403 模板的主要内容,如果未能解决你的问题,请参考以下文章