我是Django的新手,但我是其他框架中的高級程序員。如何在不使用任何模板的情況下獲得HTTPRequest JSON響應?
什麼我打算做:
按下一個表單按鈕,觸發的JavaScript將觸發該由Django視圖處理一個Ajax請求(創建一個文件)回到平原簡單的JSON數據(名該文件) - 並附加爲名爲'downloads'的DOM元素的鏈接。
我取得了什麼至今代替:
按下按鈕,觸發返回附加爲重複整個頁面JS觸發一個Ajax請求其通過Django的看法是過程(創建一個文件)名爲'downloads'的DOM元素(而不是簡單的JSON數據)。
這裏是從相應的Django視圖中提取的代碼:
context = {
'filename': filename
}
data['filename'] = render_to_string(current_app+'/json_download_link.html', context)
return HttpResponse(json.dumps(data), content_type="application/json")
我嘗試了幾種變體(像https://stackoverflow.com/a/2428119/850547),有和沒有RequestContext對象;不同的渲染策略..我現在沒有想法..
在我看來,有沒有可能在不使用模板的情況下發出ajax請求。: - /(但是我希望我錯了) 但即使如此:爲什麼Django返回主模板(具有完整的DOM),我沒有傳遞給上下文... 我只想要JSON數據 - 不是更多!
我希望我的問題是可以理解的......如果你需要更多的信息讓我知道,我會添加它們。
編輯:
爲即將到來的問題 - json_download_link.html看起來是這樣的:
<a href="{% url 'foobar:download' customer filename %}">Download</a>
但我甚至不希望使用!
相應的jQuery:
$.post(url, form_data)
.done(function(result){
$('#downloads').append('<a href="'+baseUrl+'/download/'+result['filename']+'" title="download"> Download CSV</a>')
})
看起來像你的AJAX請求調用其他代碼片段。可以從Django視圖服務JSON並且您的代碼看起來不錯。 – niekas
render_to_string(current_app +'/ json_download_link.html'...)的輸出是什麼樣的? –
我添加了信息,請參閱我的編輯 – tector