请参阅下面的答案以获得更好的解决方案。自从我写这篇文章以来,发生了很多变化。现在有禁用CSRF的更好方法。
我感到你很痛苦。框架更改这种基本功能是不可接受的。即使我想从现在开始使用它,我在同一台计算机上的旧站点也共享django的副本。此类更改应要求对主要版本号进行修订。1.x->2.x。
无论如何,要修复它,我只是将其注释掉,并已停止频繁更新Django。
文件:django / middleware / csrf.py在第160行附近:
# check incoming token
# request_csrf_token = request.POST.get('csrfmiddlewaretoken', None)
# if request_csrf_token != csrf_token:
# if cookie_is_new:
# # probably a problem setting the CSRF cookie
# return reject("CSRF cookie not set.")
# else:
# return reject("CSRF token missing or incorrect.")
是的,可以禁用Django csrf框架。
要手动将视图功能排除在任何CSRF中间件的处理之外,可以使用django.views.decorators.csrf模块中的csrf_exempt装饰器。例如:(请参阅doc)
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def my_view:
return Httpresponse("hello world")