403在Django中向端点发出Ajax请求时禁止

时间:2020-10-28 16:38:59

标签: python jquery json django ajax

我有这个端点,我正在使用AJAX从控制台向其发出发布请求,而不是我向其发出请求的网页。

$.ajax({
            type: 'POST',
            url: "http://127.0.0.1:8000/browse/",
            data: {csrfmiddlewaretoken: window.CSRF_TOKEN},
            success: function() {
                console.log("Success!");
            }
        })

但是它给了我

VM29 jquery.min.js:2 POST http://127.0.0.1:8000/browse/ 403 (Forbidden)

Django视图代码除了返回伪数据外什么也不做

def Browse(request):

    data = [{'name': 'Peter', 'email': 'peter@example.org'},
            {'name': 'Julia', 'email': 'julia@example.org'}]

    return JsonResponse(data, safe=False)

urls.py

urlpatterns = [
    path('browse/', views.Browse, name = 'browse'),

2 个答案:

答案 0 :(得分:1)

由于您当前不使用表单,因此可以免除csrf

from django.views.decorators.csrf import csrf_exempt


@csrf_exempt
def Browse(request):

    data = [{'name': 'Peter', 'email': 'peter@example.org'},
            {'name': 'Julia', 'email': 'julia@example.org'}]

    return JsonResponse(data, safe=False)

答案 1 :(得分:0)

尝试

data: {"csrfmiddlewaretoken" : "{{csrf_token}}"}

代替

data: {csrfmiddlewaretoken: window.CSRF_TOKEN},

希望这对您有用,否则请点击以下链接: https://docs.djangoproject.com/en/dev/ref/csrf/#ajax