简体   繁体   English

在 Django 中的 ajax POST 期间禁止(CSRF 令牌丢失或不正确。)

[英]Forbidden (CSRF token missing or incorrect.) during ajax POST in Django

i am trying to send a csv file and bunch of data through ajax getting Forbidden (CSRF token missing or incorrect.) error while sending csrftoken one more thing ,i checked i am getting different token in code and cookies so i tried.我正在尝试通过 ajax 发送一个 csv 文件和一堆数据,但在发送 csrftoken 时出现禁止(CSRF 令牌丢失或不正确)错误,我检查了我在代码和 cookie 中收到了不同的令牌,所以我尝试了。 https://docs.djangoproject.com/en/2.2/ref/csrf/ docs as well but no luck could you please help me out here , https://docs.djangoproject.com/en/2.2/ref/csrf/ docs 以及但没有运气你能在这里帮助我,

here is js code这是js代码

$('#upload').click(function(){
    console.log('hello');
    var store = $('#id_store').val();
    var kitchen = $('#id_kitchen').val();
    var form = $('.csv').prop('files')[0];
    var csrftoken = $("[name=csrfmiddlewaretoken]").val();
    console.log(store)
    data={
     'csrfmiddlewaretoken':csrftoken,
     'kitchen':kitchen,
     'store':store,
     'csv_file':form,
     }
    console.log(data)
    $.ajax({
        url: "{{url('custom-admin:csv_upload')}}",
        type: 'POST',
        data: data,
         processData: false,
         contentType:false,
         success: function (data) {
           if(data.status){
            alert(data.message)
           }
           else{alert(data.message)}
    }
    });
    })

html File html文件

   <form id="demo-form2" method="post" data-parsley-validate="" class="form-horizontal form-label-left" enctype="multipart/form-data">
   <div class="form-group">
      <input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
      <label class="control-label col-md-3 col-sm-3 col-xs-5"> Store <span
         class="required">*</span>
      </label>
      <div class="col-md-6 col-sm-6 col-xs-12 stores" id="stores">
         {{ form.store }}
      </div>
   </div>
   <div class="form-group">
      <label class="control-label col-md-3 col-sm-3 col-xs-5"> Kitchen <span
         class="required">*</span>
      </label>
      <div class="col-md-6 col-sm-6 col-xs-12 kitchen_list" id="kitchen_list">
         {{ form.kitchen }}
      </div>
   </div>
   <div class="form-group"  >
      <label class="control-label col-md-3 col-sm-3 col-xs-5" >  Upload File <span
         class="required"></span>
      </label>
      <div class="col-md-6 col-sm-6 col-xs-12 file">
         {{form.csv_file}}
         {% if form_errors.csv_file %}
         <div class="alert alert-danger">{{form_errors.csv_file}}</div>
         {% endif %}
      </div>
   </div>
   <div class="form-group" >
      <div class="col-md-3 col-sm-3 col-xs-12 col-md-offset-3" style="margin-bottom:10px;">
         <button  type="button" class="btn btn-primary upload" id="upload"> Upload </button>
      </div>
   </div>
</form>

forms.py表格.py

class CsvImportForm(forms.Form):
    kitchen = forms.ChoiceField(
        widget=forms.Select(attrs={
            'type': "radio",
            'class': "btn btn-primary btn-md",
            'data-parsley-multiple': 'gender'
        })
    )

    store = forms.ChoiceField(
        widget=forms.Select(attrs={
            'type': "radio",
            'class': "btn btn-primary btn-md stores",
            'data-parsley-multiple': 'gender'
        })
    )
    csv_file = forms.FileField(
        required=False,
        widget=forms.FileInput(attrs={
            'type': "file",
            'class':"csv",
            "data-validation": "mime",
            'data-validation-allowing': "csv",
            'data-validation-error-msg-mime': "You can only upload images in (csv)."
        })
    )

Once try with javascript 'sFormData function.一旦尝试使用javascriptFormData函数。

$('#upload').click(function(){  
        var formData = new FormData();
        var csrftoken = $("[name=csrfmiddlewaretoken]").val();
        formData.append('store', $('#id_store').val());
        formData.append('csrfmiddlewaretoken', csrftoken);
        formData.append('kitchen',  $('#id_kitchen').val());
        formData.append('csv_file', $('.csv')[0].files[0]);

    $.ajax({
        url: "{{url('custom-admin:csv_upload')}}",
        type: 'POST',
        data: formData,
        processData: false,
        contentType:false,
        success: function (data) {
           if(data.status){
            alert(data.message)
           }
           else{
            alert(data.message)
           }
        }
    });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 禁止(CSRF 令牌丢失或不正确。) | Django 和 AJAX - Forbidden (CSRF token missing or incorrect.) | Django and AJAX “禁止(CSRF 令牌丢失或不正确。):”使用 Django 和 JS - “Forbidden (CSRF token missing or incorrect.):” using Django and JS Django 和 Axios 禁止访问(CSRF 令牌丢失或不正确。) - Django and Axios Forbidden (CSRF token missing or incorrect.) (缺少CSRF令牌或不正确。)在Django中使用AJAX - (CSRF token missing or incorrect.) using AJAX in Django 尽管正确发送令牌,Django 服务器仍报告“禁止(CSRF 令牌丢失或不正确。)”? - Django server reporting "Forbidden (CSRF token missing or incorrect.)" despite sending token correctly? 错误:使用 django rest 框架时禁止(CSRF 令牌丢失或不正确。) - Error :Forbidden (CSRF token missing or incorrect.) while using django rest framework 禁止(CSRF令牌丢失或不正确。)-即使已包含 - Forbidden (CSRF token missing or incorrect.) - even though it's included 禁止(CSRF令牌丢失或不正确。)Django如何解决?用我的代码 - Forbidden (CSRF token missing or incorrect.) Django how to solve?WITH MY CODE 如何更正 django 中的以下代码,它给出错误“禁止(CSRF 令牌丢失或不正确。)” - How do I correct the following code in django, It's give an error “Forbidden (CSRF token missing or incorrect.)” 用yui设置Django CSRF_TOKEN,但控制台显示“ django.request禁止(CSRF令牌丢失或不正确。)”。 - Set Django CSRF_TOKEN with yui, but console says 'django.request Forbidden (CSRF token missing or incorrect.)'
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM