如何从 html/templates 获取数据

How to fetch data from html/templates

我正在使用 html5 地理定位来获取每个用户的当前位置,然后将其存储到数据库中。 我不知道如何在不使用 html 中的表单或输入法的情况下获取当前位置,然后 post 将其发送到服务器。

<form method="post" id="geo_form">
    <input type="hidden" id="lat" name="lat" value="">
    <input type="hidden" id="lon" name="lon" value="">
    <input type="submit" name="submit" value="Click">
</form>

<script>
    function getLocation() {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(showPosition);
        }
    }

    function showPosition(position) {
        document.getElementById("lat").value = position.coords.latitude;
        document.getElementById("lon").value = position.coords.longitude;   
    }

    getLocation()

<script>

然后在数据库中,我可以使用 post:

获取地理位置
def post(self):
    lat = float(self.request.get("lat"))
    lon = float(self.request.get("lon"))

问题是我想让每次用户刷新页面时更新当前位置。有什么办法吗?

我知道我可以使用 getDocumentbyId.submit() 但我想将此页面设为主页,用户可以根据自己的位置获取本地提要。所以,如果我在这个 html 中使用 getDocumentbyId.submit() 它将进入无限循环。

在处理请求时,GAE 会自动插入响应 header X-AppEngine-CityLatLong,其中包含基于客户端请求的 IP 地址的纬度和经度。

您可以通过以下方式访问 header:

location = self.request.headers.get('X-AppEngine-CityLatLong')

更多信息在这里:http://rominirani.com/2012/04/25/appengine-location-detection-update-x-appengine-country-and-more/