如何从html / templates中获取数据

时间:2015-08-30 08:13:46

标签: html5 google-app-engine jinja2 google-cloud-datastore

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

<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()但是我想让这个页面成为用户可以根据其位置获取本地feed的主页面。所以,如果我在这个html中使用getDocumentbyId.submit(),它将无限循环。

1 个答案:

答案 0 :(得分:3)

在提供请求时,GAE会根据客户端请求的IP地址自动插入包含纬度和经度的响应标头X-AppEngine-CityLatLong

您可以使用以下内容访问标题:

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

此处有更多信息:http://rominirani.com/2012/04/25/appengine-location-detection-update-x-appengine-country-and-more/