【问题标题】:AJAX Post request from Javascript to Python (Django, views.py)从 Javascript 到 Python 的 AJAX 发布请求(Django,views.py)
【发布时间】:2015-06-25 05:11:08
【问题描述】:

我正在尝试使用 AJAX 将 POST 请求从 javascript 发送到 views.py。但是,我收到 403 错误,说明 csrf 令牌不存在。

为了解决这个问题,我关注了this link 并将该函数包含在我的 javascript 中。但是,我对下一步应该做什么感到困惑。

我们将不胜感激。谢谢!

【问题讨论】:

    标签: jquery python ajax django post


    【解决方案1】:

    只需在模板中的某处添加:

    {% csrf_token %}
    

    那么在你的 js 文件中应该是这样的:

    var csrf_token;
    
    var sendSomeAjax = function(target) {
        var requestUrl = $(target).data('url');
    
        return $.ajax({
            url: requestUrl,
            type: 'post',
            headers: {
                'X-CSRFToken': csrf_token
            },
            dataType: 'json'
            // also you can pass some 'data: ' here
        })
    };
    
    $(function() {
        csrf_token = $('input[name="csrfmiddlewaretoken"]').val();
    
        var target = $('.someSelectorWhereYouHavePassedDataUrlToYourView');
        // for example in your template <a href="#" data-url="{% url 'app_url_namespace:view_url_name' %}"</a>
    
        sendSomeAjax(target).success(function(data) {
            // do smth with data =)
        });
    });
    

    【讨论】:

    • 感谢 madzohan。对我来说,只需将 csrf 令牌的密钥从“csrftoken”更改为“csrfmiddlewaretoken”就可以了。
    猜你喜欢
    • 2020-10-30
    • 2014-05-14
    • 2013-10-04
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 2015-01-07
    相关资源
    最近更新 更多