没关系,直到突然在我的API上实现Django==1.10
django-allauth==0.29.0
django-angular==0.8.3
django-debug-toolbar==1.6
django-debug-toolbar-request-history==0.0.3
django-debug-toolbar-template-profiler==1.0.1
django-debug-toolbar-template-timings==0.7
djangorestframework==3.5.3
时出现上述错误。
在此之前,即使在我的生产环境中也可以正常工作。我仅在本地环境中看到此错误。
根据this的答案,该错误将消失,但是我需要知道为什么?
请让我知道我应该在此帖子中添加哪些信息。
以下是相关的软件包。
{{1}}
答案 0 :(得分:0)
Add try/except statement to enforce_csrf()
请注意,此错误源于类SessionAuthentication中的方法execute_csrf()中的rest_framework / authentication.py。 execute_csrf()方法初始化变量,check = CSRFCheck(),下一行显示“ check.process_request(request)。
如果使用IDE,您会很快注意到CSRFCheck()没有此属性/方法,因此会出现错误。许多开发人员会迅速告诉您升级到django> = 1.11.6,但是您肯定会遇到相同的错误。 为此,我正在使用django 1.11.6和rest_framework 3.9.1。
因此,尝试这种补救措施对我有用。使用try / except语句。 进入下面的rest_framework / authentication.py,检查= CSRFCheck(), 添加这个...
def enforce_csrf(self, request):
...
try:
check.process_request(request)
except:
pass
这句话说的是: 声明“ check”变量后,调用(尝试)此方法“ process_request()”,如果该方法不起作用(除外),则只需通过。您可以通过以下方法实现两件事:一,使字面意义上的rest_framework源代码兼容(假定升级到django的其他版本“可能”可以解决此问题),二,得到有效的代码(不错!,尤其是在工作敏捷的情况下)