让CSRF中间件在Django的404错误页面中生效
我在Django项目的404.html页面里放了一个登录框和一个关键词搜索框,这样如果出现404错误,访问者就可以有更多的选择去跳转到其他地方。
但是,CSRF中间件在404错误页面上不起作用,因为没有渲染出csrf令牌。我试着把'django.middleware.csrf.CsrfViewMiddleware'移动到settings.py里的MIDDLEWARE_CLASSES的最前面,但也没有用。
有没有人知道解决办法?
2 个回答
1
看起来他们在Django中修复了这个问题,具体可以查看这个链接:http://code.djangoproject.com/ticket/14565
不过,这个修复似乎还没有在最新版本中发布,所以我自己做了一个自定义的错误页面,内容和'django.views.defaults.page_not_found'
是一样的,并且做了在那个链接中提到的修改。
0
我的想法是,你应该自己制作一个错误处理器,然后用django.middleware.csrf.get_token()手动生成令牌。