我有一個 Django 應用程式,用戶可以在其中上傳表單提交檔案。上傳檔案后,程式將從 csv 檔案中獲取列名并將其顯示在 Django 模板中
這是我的看法
def handle_new_file(request):
if (request.method == 'POST'):
form = NewFileForm(request.POST, request.FILES)
if form.is_valid():
csv_file = request.FILES['csv_file']
fs = FileSystemStorage()
file_name = fs.save(csv_file.name, csv_file)
file_url = f"./media/file_uploads/{file_name}"
print(file_name)
print(file_url)
cols = get_column_names(file_url)
form.save()
return HttpResponse(cols)
雖然在表單提交時成功呼叫了上述視圖,但我無法將此cols資料傳遞回模板。這是我的 Ajax 代碼
function upload(event) {
event.preventDefault();
var data = new FormData($('form').get(0));
$.ajax({
url: $(this).attr('action'),
type: $(this).attr('method'),
data: data,
cache: false,
processData: false,
contentType: false,
success: function (data) {
alert(data);
}
});
return false;
}
$(function () {
$('#new_form').submit(upload);
});
我究竟做錯了什么?
uj5u.com熱心網友回復:
您可以使用JsonResponse[Django-doc]將結果作為 JSON blob 回傳:
def handle_new_file(request):
if request.method == 'POST':
form = NewFileForm(request.POST, request.FILES)
if form.is_valid():
csv_file = request.FILES['csv_file']
fs = FileSystemStorage()
file_name = fs.save(csv_file.name, csv_file)
file_url = f"./media/file_uploads/{file_name}"
print(file_name)
print(file_url)
cols = get_column_names(file_url)
form.save()
return JsoNResponse({'cols': cols})
然后在 AJAX 呼叫中,您可以使用以下方式訪問該物件:
$.ajax({
# …
success: function (data) {
console.log(data.cols);
}
});
當然在現實中你處理data.cols,并且可能不記錄串列的內容。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/363771.html
標籤:查询 姜戈 阿贾克斯 django-views
