Javascript Django中的ajax POST期间禁止(CSRF令牌丢失或不正确)
我试图通过ajax发送一个csv文件和一堆数据禁止获取(CSRF令牌丢失或不正确)。发送csrftoken时出错还有一件事,我检查了代码和cookie中获取的不同令牌,所以我尝试了。 医生也是,但运气不好 你能帮帮我吗 这里是js代码Javascript Django中的ajax POST期间禁止(CSRF令牌丢失或不正确),javascript,django,ajax,cookies,django-templates,Javascript,Django,Ajax,Cookies,Django Templates,我试图通过ajax发送一个csv文件和一堆数据禁止获取(CSRF令牌丢失或不正确)。发送csrftoken时出错还有一件事,我检查了代码和cookie中获取的不同令牌,所以我尝试了。 医生也是,但运气不好 你能帮帮我吗 这里是js代码 $('#upload').click(function(){ console.log('hello'); var store = $('#id_store').val(); var kitchen = $('#id_kitchen').va
$('#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文件
<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>
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)."
})
)
使用
javascript
的函数尝试一次
$('#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)
}
}
});
});
当你说你在尝试Django文档中的内容时没有运气时,你的意思是你仍然得到CSRF令牌丢失错误?你的问题有点不清楚,你能添加你的代码吗?@DanielHolmesyeah@Mathyou我也添加了JS代码