【发布时间】:2020-10-28 00:04:24
【问题描述】:
我正在尝试编写一个使用 javascript "JQUERY" $get 的工具。以异步方式从多个 API 中获取数据。数据被推送到查询并通过 AJAX 发送到 DJANGO。那行得通,但是..数据应该通过Python在后端编辑,然后应该发送回前端。 问题:数据显示在我对检查器工具 (FIREFOX) 的回答中,但不在我的 HTML 中。
我的 HTML:
<form method="POST" action="/my_page/" id="test_form">
{% csrf_token %}
<input type="text" id="name" name="name" placeholder="Type Keywords ...">
<input type="submit" value="GO!"></input>
</form>
<tbody>
{% for task in tasks %}
<tr>
<td>
{{ task }}
</td>
</tr>
{% endfor %}
</tbody>
js:
$(document).on('submit','#test_form', function(e){
e.preventDefault();
var daten = [];
var input = $('#name').val();
var apis = [
API1, API2, API3,...... and so on to API 50
];
var api;
for (api of apis){
$.get(api, function(data){
for (bla of data.suggestions){
daten.push(bla.value)
};
});
};
const promise3 = new Promise((resolve, reject) => {
setTimeout(resolve, 2000, daten);
});
Promise.all([promise3]).then((values) => {
$.ajax({
type: 'POST',
url: '/my_page/',
data: {'daten[]': values},
success:function(data){
console.log(data);
}
});
return false;
});
});
views.py:
@csrf_exempt
def my_page(request):
if request.is_ajax():
tasks = request.POST.getlist('daten[]')
print(tasks) #That works fine
return render(request, 'myApp/my_page.html', {
'tasks':tasks,
})
else:
return render(request, 'myApp/my_page.html')
我已经研究了几天的解决方案,但我快要绝望了。有人可以帮帮我吗?
【问题讨论】:
-
你试过
{{ for task in data }}吗? -
感谢乔纳斯,但这不是问题所在。我认为问题出在我的 js 或 HTML 表单中。通常我只在表单中使用 method="POST" action="/my_page/" 。提交后,它总是用数据重新加载模板。但是当使用表单 ID 时,Django 模板在提交后不会重新加载。只是 js 正在工作并将 .get 的结果发送到我的后端。从js获取数据后是否有重新加载Django模板的功能以在前端显示结果?
标签: jquery django ajax post request