Значения экспортированных строк csv в Django изменяются с помощью запятых
У меня есть сайт, на котором есть несколько радиокнопок, которые в зависимости от того, на какую из них вы нажимаете, загружают одну таблицу базы данных или другую. Я сделал представление на Django, а затем функцию Ajax на Javascript. По какой-то причине, когда я выбираю одну из радиокнопок и нажимаю кнопку загрузки, все значения в csv меняются на что-то вроде ",,,,,". Кто-нибудь знает, почему это происходит?
Мой views.py:
def download_db(request, mode):
#data = JSONParser().parse(request)
#serializer = WordsTableSerializer(data=data)
response = HttpResponse(content_type='text/csv')
writer = csv.writer(response)
if mode == 1:
writer.writerow(['session_id', 'word1', 'word2',
'word3','distance_to_word12','distance_to_word13', 'distance_to_word23'])
for word in WordDifferentTable.objects.all().values_list('session_id', 'word1', 'word2',
'word3', 'distance_to_word12', 'distance_to_word13', 'distance_to_word23'):
writer.writerow(word)
response['Content-Disposition'] = 'attachment;
filename="WordsDifferent.csv"'
return response
elif mode == 2:
writer.writerow(['session_id', 'word1', 'word2', 'word3',
'distance_to_word12', 'distance_to_word13', 'distance_to_word23'])
for word in
LogicAnaloguiesTable.objects.all().values_list('session_id', 'word1',
'word2', 'word3', 'distance_to_word12', 'distance_to_word13',
'distance_to_word23'):
writer.writerow(word)
response['Content-Disposition'] = 'attachment;
filename="ForLogicAnalogies.csv"'
return response
elif mode == 3:
writer.writerow(['session_id', 'word1', 'word2', 'word3',
'distance_to_word12', 'distance_to_word13', 'distance_to_word23'])
for word in
SimilarWInContextTable.objects.all().values_list('session_id',
'word1', 'word2', 'word3', 'distance_to_word12', 'distance_to_word13',
'distance_to_word23'):
writer.writerow(word)
response['Content-Disposition'] = 'attachment;
filename="ForSimilarWordInContext.csv"'
return response
elif mode == 0:
writer.writerow(['session_id', 'word1', 'word2', 'word3'])
for word in WordsTable.objects.all().values_list('session_id',
'word1', 'word2', 'word3'):
writer.writerow(word)
response['Content-Disposition'] = 'attachment;
filename="WordsTable.csv"'
return response
return JsonResponse({}, status=304)
Функция Ajax:
$( "#downloadbtn" ).click(function() {
let mode = $( ".mode:checked" ).val() ? $( ".mode:checked" ).val() :
0;
var word_form_data= {
session_id: $("#session_id"),
word1: $("#word1").val(),
word2: $("#word2").val(),
word3: $("#word3").val(),
}
$.ajax({
headers: { "X-CSRFToken": csrf_token },
url: './api/download/' + mode + "/",
method: 'GET',
//data: JSON.stringify(word_form_data),
xhrFields: {
responseType: 'blob'
}, success: function (data) {
var a = document.createElement('a');
var url = window.URL.createObjectURL(data);
a.href = url;
switch(mode) {
case('1'):
a.download = 'WordDifferent.csv';
break
case('2'):
a.download = 'LogicAnalogies.csv';
break
case('3'):
a.download = 'SimilarWordInContext.csv';
break
case('4'):
a.download = 'WordsTable.csv';
break
default:
a.download = 'WordsTable.csv'
break
}
document.body.append(a);
a.click();
a.remove();
window.URL.revokeObjectURL(url);
}
});
});
Пример того, как выглядит CSV:

Заранее благодарю