Python 调试模式下CSRF令牌为空-Django 1.6

Python 调试模式下CSRF令牌为空-Django 1.6,python,django,csrf,Python,Django,Csrf,注:这是针对Django 1.6的 我试图弄明白,当Django调试设置设置为true时,为什么我们的站点上不会生成CSRF令牌 一些背景:CSRF令牌的使用方式并不像Django文档中建议的那样(不过,我也尝试过)。在表单的init函数中,它们的操作如下: from django.middleware import csrf self.fields['csrfmiddlewaretoken'].initial = csrf.get_token(self.request) 在仔细检查了执行顺序

注:这是针对Django 1.6的

我试图弄明白,当Django调试设置设置为true时,为什么我们的站点上不会生成CSRF令牌

一些背景:CSRF令牌的使用方式并不像Django文档中建议的那样(不过,我也尝试过)。在表单的init函数中,它们的操作如下:

from django.middleware import csrf
self.fields['csrfmiddlewaretoken'].initial = csrf.get_token(self.request)
在仔细检查了执行顺序之后,我发现

  • 当调试为True时:此初始化发生在csrf中间件运行之前在这种情况下,当上述代码运行时,csrf.get_token(self.request)返回None。
  • DEBUG为False时:此初始化发生在csrf中间件运行之后在这种情况下,当上述代码运行时,csrf.get_令牌(self.request)返回正确的csrf令牌。
我也尝试过删除上面添加csrf令牌的方法,而是按照Django请求的方式进行,即在表单中添加{%csrf_token%},但是这也不行

这里可能有什么问题?与应用程序本身的初始化相比,什么决定了中间件的运行顺序

请随时询问更多信息