发送数据,根据该数据查询表并进行rend

2024-03-28 21:14:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个空间数据基础设施。它基于使用Django创建的Web应用程序。webapp有一张地图,你可以在上面画多边形。根据绘制的多边形,应将特定数据返回给客户端

所以流看起来是这样的:你在地图上放置点,它在第三个点之后变成一个多边形。您按下一个按钮,该按钮触发putdatajs函数,并通过GET请求将数据发送到appropiate视图&;视图将数据放入postgres数据表中。在这之前一切都很好

在putData函数的成功回调中,我指定了另一个get请求,没有数据。处理此请求的视图从上述指定的postgres表中获取最后一行,使用最后一行的值查询另一个datatable,并使用html页面呈现查询结果。 问题是渲染永远不会发生。我按下按钮的页面保持原样,没有重定向发生

TL;DR:我想通过get请求将数据放入postgres表中,通过get请求从该表中获取值,查询第二个表,并使用从第二个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!"); } }) } }) }

获取数据.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,
    )

你能告诉我是什么原因吗?我遗漏了什么吗

我确信回调函数不是解决这个问题的最佳方法,所以我也愿意寻找更好的解决方案


Tags: 数据getrequestvarmathminquerymax
1条回答
网友
1楼 · 发布于 2024-03-28 21:14:21

据我所知,对于问题的第二部分,您正试图从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 Javascript

相关问题 更多 >