Django 1.2.5 で正常に動作していた次のコードがあります。
from django.views.decorators.csrf import csrf_exempt
class ApiView(object):
def __call__(self, request, *args, **kwargs):
method = request.method.upper()
return getattr(self, method)(request, *args, **kwargs)
@csrf_exempt
class MyView(ApiView):
def POST(self):
# (...)
return HttpResponse(json.dumps(True), mimetype="text/javascript")
しかし、Django 1.4 にアップグレードすると、「CSRF 検証に失敗しました」というメッセージとともに、403 禁止が発生し始めました。
@csrf_exempt デコレータが機能しないのはなぜですか?
URL の定義は次のとおりです。
from django.conf.urls.defaults import *
from django.views.decorators.csrf import csrf_exempt
import views
urlpatterns = patterns('',
url(r'^myview/(?P<parameter_name>[A-Za-z0-9-_]+)/$',
views.MyView(),
name="myproject-myapp-myview",
),
)