【问题标题】:Django Rest Framework ModelViewSet View Not seeing CSRFToken from datatablesDjango Rest Framework ModelViewSet 视图没有从数据表中看到 CSRFToken
【发布时间】:2020-12-17 17:35:46
【问题描述】:

除了 djangorestframework 之外,我还在使用 djangorestframework-datatables 包。除了 django 文档中提供的在标头中设置 X-CSRFToken 的 ajax 设置之外,我还使用 datatables ajax 函数在标头中设置了 CSRFToken:

Data.columns = [];
  $('th').each(function(item,i){
    Data.columns.push({'data': $(this).text().trim()})
  });

  $('#searchtable').DataTable({
    'serverSide': true,
    'ajax': {
      'url': '/api/v1/reports/?format=datatables',
      'type': 'POST',
      'columns': Data.columns,
      'headers': {'CSRFToken': Data.csrftoken },
    }
  });

这是我正在写的视图的 drf 代码:

class ReportViewSet(viewsets.ModelViewSet):
    queryset = Report.objects.all()
    serializer_class = ReportSerializer
    permission_classes = [IsAuthenticated]

我得到的错误是:“CSRF 失败:CSRF 令牌丢失或不正确” - 这是在响应中

谁能帮忙?

【问题讨论】:

    标签: python django ajax django-rest-framework datatables


    【解决方案1】:

    example app中配置如下:

    $('#albums_post').DataTable({
            "serverSide": true,
            "ajax": {
                "url": "api/post-list/albums/?format=datatables",
                "type": "POST",
                "beforeSend": function(xhr) {
                    xhr.setRequestHeader("X-CSRFToken", "{{ csrf_token|escapejs }}");
                }
            },
    

    【讨论】:

      猜你喜欢
      • 2016-08-01
      • 1970-01-01
      • 2014-08-24
      • 1970-01-01
      • 1970-01-01
      • 2015-11-08
      • 2021-12-02
      • 1970-01-01
      • 2018-02-13
      相关资源
      最近更新 更多