luc*_*luc 14 python django django-templates django-csrf
如果csrf检查失败,Django会显示一个403错误的页面.

在我看来,这种错误可能会在常规使用中发生,例如,当用户在其浏览器设置中禁用cookie使用时.
不幸的是,此错误消息对最终用户没有太大帮助,并且具有"django-error"布局(这是一个问题,因为例如缺少站点导航).
Django有一个很好的机制来覆盖模板,但似乎这个模板在代码中是硬编码的.https://github.com/django/django/blob/1.6.8/django/views/csrf.py
有没有办法覆盖此模板,以便向用户提供更友好的消息?
daz*_*sed 23
请参阅Django文档,您可以CSRF_FAILURE_VIEW在您的设置中settings.py,例如:
CSRF_FAILURE_VIEW = 'your_app_name.views.csrf_failure'
Run Code Online (Sandbox Code Playgroud)
此外,您需要csrf_failure在视图中定义一个函数(需要具有此签名:def csrf_failure(request, reason="")基于文档),类似于:
def csrf_failure(request, reason=""):
ctx = {'message': 'some custom messages'}
return render_to_response(your_custom_template, ctx)
Run Code Online (Sandbox Code Playgroud)
您可以将自定义模板编写为:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
{{ message }}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
小智 5
从Django 1.10开始,您可以简单地添加和自定义403_csrf.html模板:https : //docs.djangoproject.com/en/1.10/ref/settings/#std : setting-CSRF_FAILURE_VIEW
| 归档时间: |
|
| 查看次数: |
6389 次 |
| 最近记录: |