我正在开发一个空间数据基础设施。它基于Django创建的一个with应用程序。webapp有一张地图,你可以在上面画多边形。根据您绘制的多边形,应将特定数据返回给客户端。
流程是这样的:你把点放在地图上,它在第三个点之后变成一个多边形。您可以按一个按钮,该按钮触发一个putData js函数,并使用GET请求将数据发送到appropiate &该视图将数据放入postgres。在此之前一切都很好。
在putData函数的成功回调中,我指定了另一个get请求,没有数据。处理此请求的视图从上面指定的postgres表中获取最后一行,使用最后一行的值对另一个datatable进行查询,并使用html页面呈现查询结果。问题是渲染永远不会发生。我按下按钮的页面保持原样,不发生重定向。
TL;DR:我想将数据放入带有get请求的postgres表中,从该表中获取值,查询第二个表,并使用从第二个datatable获得的值呈现第二个html页面。
main.js
function putData() {
//Biggest and lowest values from the arrays.
console.log('YAYYYYYYYYYYYYYYYYYYYYYYYYYYYYY');
var maxX = Math.max(...boundingBox.X);
var minX = Math.min(...boundingBox.X);
var maxY = Math.max(...boundingBox.Y);
var minY = Math.min(...boundingBox.Y);
//AJAX request to getdata view with the four coorinates.
$.ajax({
url: "getdata/",
type: "get",
data: {'max_x': maxX, 'min_x': minX, 'max_y': maxY, 'min_y': minY},
success: function () {
console.log("Success!");
$.ajax({
url: "dowload",
type: "get",
success: function () {
console.log("Success!");
}
})
}
})
}
get_data.py
def get_data(request):
maxX = request.GET['max_x']
minX = request.GET['min_x']
maxY = request.GET['max_y']
minY = request.GET['min_y']
extents = {
'max_x': maxX,
'min_x': minX,
'max_y': maxY,
'min_y': minY,
}
query = Query(max_x=maxX, min_x=minX, max_y=maxY, min_y=minY, username=username)
query.save()
return HttpResponse(extents)printdata.py
def download(request):
last_query = Query.objects.last()
extents = {
'max_x': last_query.max_x,
'min_x': last_query.min_x,
'max_y': last_query.max_y,
'min_y': last_query.min_y,
}
"""
The **query** to the second datatable happens here.
"""
return render(
request,
'output.html',
context=query_result,
)你能告诉我原因是什么吗?我是不是漏掉了什么?
我确信回调函数不是解决这个问题的最佳方法,所以我也可以找到更好的解决方案。
发布于 2018-11-29 19:52:32
据我所知,您正在尝试为问题的第二部分呈现ajax调用中的django模板。我觉得没必要。就像这样:
url: "getdata/",
type: "get",
data: {'max_x': maxX, 'min_x': minX, 'max_y': maxY, 'min_y': minY},
success: function () {
console.log("Success!");
window.location = '/download' // will forcefully change the url of the browser to load the page.
}
})
}另外,第一个视图的响应应该是一个JsonResponse:
from django.http import JsonResponse
def get_data(request):
maxX = request.GET['max_x']
minX = request.GET['min_x']
maxY = request.GET['max_y']
minY = request.GET['min_y']
extents = {
'max_x': maxX,
'min_x': minX,
'max_y': maxY,
'min_y': minY,
}
query = Query(max_x=maxX, min_x=minX, max_y=maxY, min_y=minY, username=username)
query.save()
return JsonResponse(extents) # this is if you want to use these json data in Javascripthttps://stackoverflow.com/questions/53546124
复制相似问题