首页 > 解决方案 > 自动从用户的浏览器获取用户的位置,而不是在 django 视图中硬编码来过滤最近的商店

问题描述

我正在构建一个简单的附近商店应用程序,该应用程序使用 django 和 GeoDjango 列出离用户位置最近的商店。要列出商店,我想从他们的浏览器中获取用户的位置,然后为用户过滤最近的商店,而不是对其进行硬编码。

视图.py

from django.views import generic
from django.contrib.gis.geos import Point
from django.contrib.gis.db.models.functions import Distance
from .models import Shop

longitude = -80.191_788
latitude = 25.761_681

user_location = Point(longitude, latitude, srid=4326)


class Home(generic.ListView):
    model = Shop
    context_object_name = "shops"
    queryset = Shop.objects.annotate(
        distance=Distance("location", user_location)
    ).order_by("distance")[0:6]
    template_name = "Home.html"

模型.py


class Shop(models.Model):
    name = models.CharField(max_length=100)
    location = models.PointField()
    address = models.CharField(max_length=100)
    city = models.CharField(max_length=50)

标签: javascriptdjangodjango-viewsgeodjango

解决方案


您可以使用 API 服务(如 Google Places API)为您提供附近对象的数据以及使用 API 中的地理定位调用的当前位置。 https://developers.google.com/maps/documentation/places/web-service/overview


推荐阅读