Python 在Django中将经度和纬度保存到用户配置文件

Python 在Django中将经度和纬度保存到用户配置文件,python,html,django,location,geo,Python,Html,Django,Location,Geo,我在寻找一种使用HTML5(可能还有JS)将访问者/用户纵向和横向数据保存到数据库的方法。我不希望在那里使用包,因为它们看起来有点过时,并且考虑到它们自己对其他API的依赖,将来可能会破坏我的代码 我知道有一种使用AJAX的方法,但我显然不太了解和理解它,无法实现它 我对博学的贵族们的要求是-1。获取Loc数据2。以dict、json或字符串格式将其发送到Python,以便进一步处理和保存 为什么你会问这个问题?好问题。我会用它在主页上显示天气,在“登录”页面上显示本地推特趋势 任何协助都将不胜

我在寻找一种使用HTML5(可能还有JS)将访问者/用户纵向和横向数据保存到数据库的方法。我不希望在那里使用包,因为它们看起来有点过时,并且考虑到它们自己对其他API的依赖,将来可能会破坏我的代码

我知道有一种使用AJAX的方法,但我显然不太了解和理解它,无法实现它

我对博学的贵族们的要求是-1。获取Loc数据2。以dict、json或字符串格式将其发送到Python,以便进一步处理和保存

为什么你会问这个问题?好问题。我会用它在主页上显示天气,在“登录”页面上显示本地推特趋势

任何协助都将不胜感激

干杯

我的JS代码如下:

    // Set up global variable
var result;

function showPosition() {
    // Store the element where the page displays the result
    result = document.getElementById("result");

    // If geolocation is available, try to get the visitor's position
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(successCallback, errorCallback);
        result.innerHTML = "Getting the position information...";
    } else {
        alert("Sorry, your browser does not support HTML5 geolocation.");
    }
};

// Define callback function for successful attempt
function successCallback(position) {
    result.innerHTML = [position.coords.latitude, position.coords.longitude];
}

// Define callback function for failed attempt
function errorCallback(error) {
    if (error.code == 1) {
        result.innerHTML = "You've decided not to share your position, but it's OK. We won't ask you again.";
    } else if (error.code == 2) {
        result.innerHTML = "The network is down or the positioning service can't be reached.";
    } else if (error.code == 3) {
        result.innerHTML = "The attempt timed out before it could get the location data.";
    } else {
        result.innerHTML = "Geolocation failed due to unknown error.";
    }
}

window.onload = showPosition;
在JS代码中:

函数成功回调(位置){
result.innerHTML=[position.coords.latitude,position.coords.longitude];
$.post('your-python-endpoint-url'{
纬度:位置。坐标。纬度,
经度:position.coords.longitude
});
}
在python中:

def索引(请求):
if request.is_ajax():
如果request.method==“POST”:
打印“原始数据:“%s”%request.body
返回HttpResponse(“确定”)
根据需要更改方法名称和主体,不要忘记在django中定义路由。

适合我的方法:

首先,我建议您在模型上使用
models.PointField

当我获得FE上的long/lat数据时,我将其作为表格数据以以下格式发送,例如:

"{\"type\":\"Point\",\"coordinates\":[14.215641,50.0100000001]}"

然后将其映射到模型字段并保存。它保存得很好,以后我可以用它查询google geocoder或任何东西。

这能满足您的需要吗?在前端,您可以使用JS调用api并使用位置更新用户配置文件@影子小子:谢谢你的链接,但我已经有了长和长。。。我是新手,因此不知道如何附加屏幕截图。如前所述。我只是在寻找一个解决方案,将JS值传输到Python进行分析和Twitter趋势。@LinhNguyen在前端,一切正常。。。我在那里有需要的东西。。。我需要将其发送回Django/Python进行分析。非常感谢。这可能对你有帮助:@DavidLauda-如何?一行代码没有帮助。我的错误是,我忘记了Pointfield来自GeoDjango,您不希望使用包。在这种情况下,我建议以@shaedrich的答案中描述的形式发送数据,然后将其映射保存到两个
模型。在您的模型上使用Floatfield
。谢谢,会让您知道最终结果。。。