使用Django时,jquery json出现“CSRF验证失败,请求被中止”错误

3 投票
2 回答
1158 浏览
提问于 2025-04-18 18:41

我想获取一些json数据,然后把它放到数据库里。现在我在用django这个框架。

但是当我发送json数据的时候,出现了这个错误:禁止访问(403),CSRF验证失败,请求被中止。

代码

def receiver(request):
    try:
        json_data = request_to_json(request)  

        # Retrieving json data
        x = json_data['x']
        y = json_data['y']
        z = json_data['z']
        # put it in database

        db = db_connection().db;
        db_manager= db_management(db);
        db_manager.insert_point(x,y,z,x);
        db.close() 

        # A variable to return to the app
        response = 'OK'

    except:
        response = 'Error'

    return HttpResponse(simplejson.dumps(response))

2 个回答

2

这是我找到的解决方案:

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def my_view(request):
    return HttpResponse('Hello world')
1

当你尝试提交一些不在Django表单中的数据时,就会出现这个错误。

一个简单但不安全的方法是在你的视图函数前面加上 @csrf_exempt,像这样:

@csrf_exempt
def my_view(request):
    pass

还有一种不那么简单的方法,可以在这里找到: https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax

撰写回答