我正在尝试获取用户设备位置。但是 geoip2 返回一个远离用户位置的位置(大约 20 公里到 25 公里)。当我通过移动网络连接我的设备时,当我将我的设备与 wifi 连接时,它会显示不同的位置
首先,我正在获取用户 ip
def get_ip(request):
xff = request.META.get('HTTP_X_FORWARDED_FOR')
if xff:
ip = xff.split(',')[0]
else:
ip = request.META.get('REMOTE_ADDR', None)
return ip
但这会获取用户的私有 ip,并且私有 ip 不在国家或城市数据集中,因此 geoip2 会引发错误。
所以我尝试通过网站获取公共IP地址
def get_ip(request):
from requests import get
ip = get('https://api.ipify.org').text
if ip:
return ip
现在我使用 geoip2 来获取用户的位置数据
def home(request,):
....
....
....
....
from django.contrib.gis.geoip2 import GeoIP2
g = GeoIP2()
ip = get_ip(request)
print(ip)
country = g.country(ip)
city = g.city(ip)
print(country, city)
lat, long = g.lat_lon(ip)
print(lat, long)
...
...
...
您能否建议一种更好的方法或正确的方法来获取用户的准确位置?